当我动态创建一个控件时,如何加入事件处理代码!!!假如我要创建一个TADOQuery,如何在它的GetText事件里加入代码呢?能否办到??????????????????

解决方案 »

  1.   

    TAdoQuery 中有 GetText 事件? 没听说过。比如给你一个动态创建的按钮添加按下事件的处理函数:
    var
      Btn: TButton;
    begin
      Btn := TButton.Create(...);
      Btn.Parent := ...  // 添加事件处理函数
      Btn.OnClick := MyNewButtonClick;
    end;
      

  2.   

    看看这个吧!
    procedure TForm1.CreateButton(ButtonClass:TButtonClass);begin
       AButton:=ButtonClass.Create(self);
       try
         AButton.Parent:=self;
         //AButton.Name:=ButtonClass.ClassName;
         TButtonObj(AButton).Caption:='aa';
         AButton.SetBounds(20,20,75,75);
         TButtonObj(AButton).OnClick:=Onclick;  ///由于CAPTION,ONCLICKD等属性是受保护域,(这里就是动态将事件副给他)
                                    //所以要申明一个TCONTROL类来访问这些属性   except
         AButton.Free;
       end;
    end;procedure Tform1.onclick(sender:Tobject);
    begin
      ShowMessage(Sender.ClassName);
    end;
      

  3.   

    直接写API不就行了吗,在Application的OnMessage中直接获得你动态创建的控件的消息,然后处理,不就完了
      

  4.   

    可以把过程赋给他.
    方法就像上面所说的.类似 Btn.OnClick := MyNewButtonClick;但是赋值的过程参数要同gettext的参数一致.
      

  5.   

    在实际编程中,有很多地方是要这样做,但是用到TADOQUERY时,我认为不要这样做, 你要知道在GETTEXT事件中,有很多东西不是通用的,主要是针对字段而言,如果你那样做,也还得先写一个事件。而你要动态建立的控件又不是很多,也不可能多次重复利用,所以本人认为不要这样做。(只是个人观点)