Q&A

  • 동적생성한 버튼에서 이벤트를 발생시킬때..
안녕하세요. 동적생성한 버튼에서 이벤트를 발생시킬때..

B.OnClick := FindNode;

위와 같이 코딩을 했습니다. 그런데 문제는 동적생성한 버튼이 하나가 아니라

열개나 그 이상이라고 했을때, 어떤 버튼에서 이벤트를 받았는지 알아야 각각

의 버튼이 눌려졌을때 실행할 수 있는 프로시져를 작성할 수 있을 것 같은데요

어떻게 하면 되나요? 버튼을 동적생성할때 사용한 코드는 아래와 같습니다.

for Count := 1 to 30 do

begin

B[Count] := TButton.Create(Self);

B[Count].Parent := self;

B[Count].Onclick := FindNode; //이렇게 하면 30개 각각에 동일한 프로

... // 시져가 연결이 되거든요.

...

end;



버튼을 한꺼번에 열개 이상을 만들어 놓고 각각의 버튼에 각기 다른 OnClick이벤트 프로시져를 발생시키는 방법을 가르쳐 주시면 정말 고맙겠습니다.

1  COMMENTS
  • Profile
    최석기 1999.06.18 18:33
    북해 께서 말씀하시기를...

    > 안녕하세요. 동적생성한 버튼에서 이벤트를 발생시킬때..

    > B.OnClick := FindNode;

    > 위와 같이 코딩을 했습니다. 그런데 문제는 동적생성한 버튼이 하나가 아니라

    > 열개나 그 이상이라고 했을때, 어떤 버튼에서 이벤트를 받았는지 알아야 각각

    > 의 버튼이 눌려졌을때 실행할 수 있는 프로시져를 작성할 수 있을 것 같은데요

    > 어떻게 하면 되나요? 버튼을 동적생성할때 사용한 코드는 아래와 같습니다.

    > for Count := 1 to 30 do

    > begin

    > B[Count] := TButton.Create(Self);

    > B[Count].Parent := self;

    > B[Count].Onclick := FindNode; //이렇게 하면 30개 각각에 동일한 프로

    > ... // 시져가 연결이 되거든요.

    > ...

    > end;

    >

    > 버튼을 한꺼번에 열개 이상을 만들어 놓고 각각의 버튼에 각기 다른 OnClick이벤트 프로시져를 발생시키는 방법을 가르쳐 주시면 정말 고맙겠습니다.





    FindNode에서 Sender가 누구인지 아는 방법이라면 다음과 같이 하면 될꺼 같은데요..



    procedure TForm1.FindNode(Sender: TObject);

    var i: integer;

    begin

    for i := Low(B) to High(B) do begin

    if Sender = B[i] then

    break;

    end;



    case i of

    1: ShowMessage(IntToStr(i)); //각 버턴에 맞는 루틴을 이부분에

    //쓰면 되겠죠.

    2: ShowMessage(IntToStr(i));

    3: ShowMessage(IntToStr(i));

    4: ShowMessage(IntToStr(i));

    5: ShowMessage(IntToStr(i));

    6: ShowMessage(IntToStr(i));

    7: ShowMessage(IntToStr(i));

    8: ShowMessage(IntToStr(i));

    9: ShowMessage(IntToStr(i));

    .

    .

    .

    end;

    end;