我用以下语句实现了动态生成按钮,按钮的Caption为数据表里的某一字段值,有多少条记录就生成多少个按钮,由于是动态生成的,所以我无法控制该按钮的ONCLICK事件,例如与field_name字段对应字段ID为计数字段,每按一次按钮,对应的ID字段值就加一。如何现?大家有什么提议?
while not query1.Eof do
  begin
  N:=query1.Fieldbyname('field_name').AsString;
  D := Tbutton.Create(Self);
  D.Parent := Form1;
  D.Left :=left;
  D.Top :=5;
  D.Width := 60;
  D.Height :=25;
  D.Caption := N;
  query1.Next;
  left:=left+70;
  end

解决方案 »

  1.   

    你写一个事件,然后把这个Button的OnClick事件指到那个自己定义的事件
      

  2.   

    可以控制Button的OnClick事件的
    ..
    private
      procedure ButtonClick(Sender: TObject);
    ...procedure TForm1.ButtonClick(Sender: TObject);
    begin
      MessageBox(Handle, PChar(TButton(Sender).Caption), '', MB_ICONINFORMATION);
    end;...
      D := Tbutton.Create(Self);
      D.Parent := Form1;
      //使OnClick事件执行ButtonClick的代码
      D.OnClick := ButtonClick;
    ...
      

  3.   

    同意MOJ的办法
    只能用sender方法获得动态创建的按纽的句柄