Q&A

  • 동적생성된 컴포넌트의 각 컴포넌트의 이벤트처리 방법
procedure TForm1.formActivate(Sender: TObject);
var Y : integer;
begin
  for y := 1 to stringgrid1.rowcount - 1 do
    begin
       StringGrid1.Objects[2, y] := Tbutton.Create(StringGrid1);
       with Tbutton(StringGrid1.Objects[2, y]) do
         begin
           Parent := StringGrid1;
           BoundsRect := StringGrid1.CellRect(2, y);
           Width := StringGrid1.ColWidths[2];
           Height := StringGrid1.RowHeights[2];
           Caption := ' 삭제 ';
           onclick := btnclick;  
         end;
    end;
end;

procedure TForm1.btnclick(Sender: TObject);
begin
  //여기서 각 버튼의 이벤트 처리방법
  //showmessage('잘 눌렀습니다1');
  //showmessage('잘 눌렀습니다2');
end;

설명: 위에 있는 소스의 내용은 스트링 그리드에 지정된 셀에 버튼을 동적으로 생성
      시켰습니다. 그리고 버튼을 클릭 할때 마다 btnclick라는 이벤트를 타게 됩니다.

질문 : 여러개의 버튼은 모두 클릭했을때 btnclick이벤트를 타게 되는데 이 btnclick라
       는 프로시저에서 어떤버튼이 클릭되었는지 즉 각각의 버튼을 클릭했을때 다른
       message를 뿌려 주고자 합니다.
1  COMMENTS
  • Profile
    정진성 2007.03.23 01:36
    버튼에 Tag를 이용하였을 경우

    Case TButton(Sender).Tag OF
      0: Begin
              showmessage('버튼1');
          End;

      1: Begin
              showmessage('버튼2');
          End;
    End;