请问大家,怎样定义一个动态生成的控件的事件。

解决方案 »

  1.   

    如:
       Button.OnClick:=ButtonClick;
    ....
    procedure Form1.ButtonClick(Sender:TObject);
    begin
       showmessage('ok');
    end;
      

  2.   

    给你个思想:如果是某类控件的子类发出的消息则做什么事情;
    so:
      如果:(Tlabel的PARENT是Panel,则PANEL下的子控件Tlabel发出了消息);语句:
      label.parent:=panel;(or form or nil);
      label.onclick:=labelclick;(对事件付过程);procedure form.labelclick(sender:TObject);
    begin
      if sender is tlabel then
       begin
       showmessage('ok'+(sender as tlabel).name) [or caption];这个(sender as ***).name or caption非常重要,它是关键部分.只要你弄懂了它就可以形成你想做的事件;记得在FORMCLOSE时要记得历遍所有的动态控件并free了它;实际上在WIN2000系统下系统会自动的free掉的.但在WIN98下就要小心了.另外,如果是用数据库做动态控件的话记得要在循环语句之后close掉ADOQUERY;
       end;