Q&A

  • 스트링그리드에서 콤보박스 동적 생성시 이벤트를 가져오고 싶은데요..
<!--CodeS-->
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
     procedure btnclick(Sender: Tobject);
  public
    { Public declarations }
  end;

procedure TForm1.btnclick;
begin
  showmessage(TButton(Sender).Name);
end;

procedure TForm1.FormActivate(Sender: TObject);
var Y : integer;
for y := 1 to 3 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;
<!--CodeE-->

위와같이 프로시저를 선언 하고 스트링그리드에 동적으로 버튼을 생성해서 넣었습니다.
버튼을 onclick 할때 btnclick 프로시저로 연결 시켰는데요..

아무리 클릭을 해도 이벤트를 안 타는건지 반응이 없네요.

Tbutton의 Parent를 Self로 바꾸면 반응을 하지만 그경우엔 폼에 그리게 되어 모양새가 이상합니다.

답변부탁드립니다.
1  COMMENTS
  • Profile
    최용일 2007.12.19 00:17
    왜 그런지는 잘 모르겠지만 Mouse Down/Up이 클릭이벤트로 바뀌지 않는것 같더군요...

    Mouse Down이나 Mouse Up이벤트를 이용해보세요...