안녕하세요. 동적생성한 버튼에서 이벤트를 발생시킬때..
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이벤트 프로시져를 발생시키는 방법을 가르쳐 주시면 정말 고맙겠습니다.
> 안녕하세요. 동적생성한 버튼에서 이벤트를 발생시킬때..
> 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;