Q&A

  • 동적으로 버튼을 여러개 생성하고 (Caption한꺼번에 알아내기)
동적으로 버튼을 생성하고, 생성된 버튼에서 클릭 이벤트로 Caption을

나타내기 까지는 했는데,,



제가 원하는 부분은



동적으로 처음 만들어진 버튼부터

맨 나중에 만들어진 버튼까지의 Caption 까지를 한꺼번에 모두 알고 싶습니다.



애공 말이 잘 안되네요..



VB의 예를 든다면



for i = 0 to 5

str = str & ", " & button1(i).caption

next

msgbox str



이런 식인데...



텔파이는 index를 지원 하지 않는지 좀처럼 알수가 없군요..

index를 넣을 수 있는 방법이나..

다른 방법이 있으시면 부탁 드리겠습니다.



procedure TForm1.Button1Click(Sender: TObject);

var

aa: integer;

n_cnt : integer;

NewBtn : Tbutton;

begin

aa := 0;

for n_cnt := 0 to 5 do begin

NewBtn := Tbutton.Create(nil);



with NewBtn do begin

Parent := form1;

SetBounds(aa,aa,50 ,50) ;

Caption := inttostr(aa);

//name := 'Button2' + '(' + n_cnt + ')'; //=> 이건 안되더군요..

name := 'Button2';

OnClick := BtnClick;

tag := n_cnt;

visible := true;

Show;

end;

aa := aa + 50;

end;

end;



procedure TForm1.BtnClick(Sender: TObject);

begin

MessageDlgPos (tbutton(Sender).Caption + ' 성공',mtConfirmation,

mbYesNoCancel,0, 200, 200);

end;

end.



1  COMMENTS
  • Profile
    김병태 2000.09.02 20:17
    ..............

    i : Integer;

    str_List: TStringList;

    begin

    str_List := TStringList.Create;



    for i:= 0 to ComponentCount - 1 DO

    BEGIN

    IF (Components[i] is TButton) THEN

    BEGIN

    str_List.Add((Components[i] as TButton).Caption);

    END

    END;

    end;

    .................



    대충 이렇게 하면 폼위의 버튼컴포넌트 의 캡션을 다 가져 올수 있지 않을까요

    만약 디자인 시에 만든 버튼을 제외하고 싶으시다면 .디자인시에 만든 버튼에는

    Tag 를 0,런타임시에 만든 버튼은 Tag 를 1 로 정해서 구분해서 가져 오면 되구요..

    이 답변이 맞는지 모르 겠군요...



    아니면 ... 버튼을 동적으로 생성할때 캡션을 문자열 배열로 가지고 있던가

    스트링 리스트에 저장 하셔도 되겠군요.....