Q&A

  • 라디오 그룹 컴포넌트 처럼...
안녕하세요



궁금한 점이 있어 글을 올립니다.

라디오 그룹 컴포넌트에서 보면 라디오 버튼 수를 동적으로

만들어 내는데요 이와같이 임의의 수 만큼 개체를 만들려면

어떻게 해야하나요?



저는 Scroolbox 를 상속받아 새로운 클래스를 만들고자 합니다.

여기에 버튼을 원하는 수 만큼 넣을수 있게 하려고 하는데

조언 부탁드립니다.



읽어 주셔서 감사합니다.





5  COMMENTS
  • Profile
    하얀까마귀 2001.04.24 10:50
    님이 말씀하신건 동적생성을 해야할것 같네요..

    참고하시면 될것 같네요..



    우선 님이 말씀하신것처럼 동적생성을 할려면 생성된 넘들에 대한

    포인터를 가지고 잇어야 겠네요..

    해서 우선

    fBtnList : TList; 형을 하나 선언합니다.

    그리고 당연히

    TForm1.Create 에서

    fBtnList := TList.Create;

    하시고



    TForm1.Close

    begin

    fBtnList.Free;

    end; <-- 요건 당연히..



    그럼이제 생성을 해야 겟죠??



    버튼을 누르면 하죠..



    procedure TForm1.Button1Click(sender : Tobject );

    var

    iBtnIndex : Integer;

    fBtn : TButton;

    begin

    //우선 버튼을 생성하구요..

    fBtn := TButton.Create(self); <-- 콤포넌트를 만드시니까 self는 콤포넌ㄴ트가

    되겠네요..



    만들었으니 추가합니다.

    iBtnIndex := fBtnList.Add( fBtn );

    if iBtnIndex >= 0 then

    begin

    // 부모와 위치값을 줘야 겠죠??

    // 물론 Catption도 주는게 좋겠죠...

    TButton(fBtnList.Items[iBtnIndex]).Parent := self;

    TButton(fBtnList.Items[iBtnIndex]).left := 20;

    TButton(fBtnList.Items[iBtnIndex]).Top := iBtnIndex * 20;

    end;



    end;



    이제 버튼을 누를때마다 폼에 버튼이 추가되니까.. 삭제도 해야죠.



    procedure TForm1.Button2Click( Sender : TObjedt );

    var

    iBtnIndex : Integer;

    begin

    // 생성된게 없으면 그냥 끝내야죠..

    if fBtnLIst.Count <= 0 then Exit;



    for iBtnIndex := 0 to fBtnList.Count -1 do

    begin

    if fBtnList.IndexOf(fBtnList.Items[iBtnIndex]) >= 0 then

    begin

    TButton(fBtnList.Items[iBtnIndex]).Free;

    end;

    end;

    // 이제 생성된 버튼들 다 없애 주었으니.. list에서도 없애 주어야죠.

    fBtnList.Clear;

    end;



    // 참고로 하시구요... 테스트 하지 않고 그냥 친거니까 혹시 오타나

    잘못된게 잇을수 있으니 너그러이 용서를..



    그럼... 즐거운시간 되세요..







    김필수 wrote:

    > 안녕하세요

    >

    > 궁금한 점이 있어 글을 올립니다.

    > 라디오 그룹 컴포넌트에서 보면 라디오 버튼 수를 동적으로

    > 만들어 내는데요 이와같이 임의의 수 만큼 개체를 만들려면

    > 어떻게 해야하나요?

    >

    > 저는 Scroolbox 를 상속받아 새로운 클래스를 만들고자 합니다.

    > 여기에 버튼을 원하는 수 만큼 넣을수 있게 하려고 하는데

    > 조언 부탁드립니다.

    >

    > 읽어 주셔서 감사합니다.

    >

    >

  • Profile
    김필수 2001.04.25 01:54
    넘 감사합니다.



    정말 도움이 확실히 됩습니다.



    그런데 동적으로 생성한 버튼들에 어떻게 이벤트(OnClick)를 줄 수 있을까요?





    죄송한데요 한가지만 더 질문드릴게요

    TJpegImage 객체를 이용하여 jpg화일을 불러와서 출력하려 하는데요

    어떤객체를 이용하여 출력하는지...



    TJpegImage 객체 자체에는 draw 함수가 없던데...

    귀찮게 해드려 죄송합니다.



    답변 정말 감사했습니다.

  • Profile
    하얀까마귀 2001.04.25 05:56
    안녕하세요..

    이벤트 또한 만들어 주시면 됩니다..



    procedure TForm1.BtnClick(Sender : TObject );

    begin

    // 코드들..

    end;



    생성하실때..



    fBtn := TButton.Create(self);

    fBtn.OnClick := BtnCLick; <-- 요렇게 하시면 됩니다.



    그리고 jpg 형의 이미지 파일은 bmp로 변환하셔서 사용해야 합니다.



    bmp.Assign( jpeg ); <-- 이렇게 하시면 됩니다.

    이렇게 만들어진 bmp를 출력하시던지 아니면 약간의 이미지 변경을 하던지 하시면

    됩니다.

    그럼.. 즐거운시간 되세요..



    김필수 wrote:

    > 넘 감사합니다.

    >

    > 정말 도움이 확실히 됩습니다.

    >

    > 그런데 동적으로 생성한 버튼들에 어떻게 이벤트(OnClick)를 줄 수 있을까요?

    >

    >

    > 죄송한데요 한가지만 더 질문드릴게요

    > TJpegImage 객체를 이용하여 jpg화일을 불러와서 출력하려 하는데요

    > 어떤객체를 이용하여 출력하는지...

    >

    > TJpegImage 객체 자체에는 draw 함수가 없던데...

    > 귀찮게 해드려 죄송합니다.

    >

    > 답변 정말 감사했습니다.

  • Profile
    파도랑 2001.12.11 00:59
    김필수 wrote:

    > 안녕하세요

    >

    > 궁금한 점이 있어 글을 올립니다.

    > 라디오 그룹 컴포넌트에서 보면 라디오 버튼 수를 동적으로

    > 만들어 내는데요 이와같이 임의의 수 만큼 개체를 만들려면

    > 어떻게 해야하나요?

    >

    > 저는 Scroolbox 를 상속받아 새로운 클래스를 만들고자 합니다.

    > 여기에 버튼을 원하는 수 만큼 넣을수 있게 하려고 하는데

    > 조언 부탁드립니다.

    >

    > 읽어 주셔서 감사합니다.

    >

    >



    라디오그룹 Items에 추가하시고 싶은 항목들을 추가하시면 됩니다...



    RadioGroup1.Items.Clear;

    for Index := 0 to 10 do

    begin

    RadioGroup1.Items.Add(IntToStr(Index)+'번째 항목');

    end;



    이러면 되구요...



    라디오그룹 높이는 항목 개수에 따라서 알맞게 키우시면 됩니다...

  • Profile
    김필수 2001.04.25 01:47
    제가 물어 본건 라디오 그룹 자체가 아니였는데...

    어떤객체를 동적으로 생성하고자 하는 경우를 물어본거에요



    하였튼 읽어 주셔서 감사합니다.