简单点 在运行期 我动态的加上了一堆组件  可不可以给它们的事件中加上执行代码
怎么做呢

解决方案 »

  1.   

    我也没试过,不过思路应该如下:
    procedure Form1.aProcedure(...);
    begin
    ...
    end;var
      aButton : TButton;
    begin
      try
        aButton := TButton.Create(From1);
        aButton.Onclick := aProcedure(...);
      except
      end;
    end;
      

  2.   

    可以例如
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        BTN:TButton;
        procedure AAAAA(Sender:TObject);
      public
        { Public declarations }
      end;var
      Form1: TForm1;
    implementation{$R *.dfm}procedure TForm1.AAAAA(Sender: TObject);
    begin
     showmessage('aaa');
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      Btn:=TButton.Create(self);
      btn.Parent:=self;
      btn.Visible:=true;
      btn.OnClick:=AAAAA;
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    Btn.Free;
    end;end.
      

  3.   

    按钮的你要控制的事件的类型必须和你自己写的过程类型相同,例如上面,
    自定义AAAAA过程其实是TNotifyEvent类型的方法指针
      

  4.   

    但是这样 我还是要先把AAAA写好    如果一函数的形式 让拥护输入各个参数来生成可以吗
      

  5.   

    这样我还是不明白   比如我要在运行期删除一个在运行期生成的组件 
    当然这点代码是我现在设计的时候写的 那我现在编译的时候那个组件并没有生成我如何用它的name
    来操作它啊编译的时候会找不到对象出错的  难道所有的动态操作都用数组?
      

  6.   

    删除组件时用控件名(string型)去查找,如果找到同名且同类型的控件则Free掉。
      

  7.   

    to : dh9450(谁有我菜) ( ) ,你的要求我不太明白,不过你可以写一个执行外部动态库的函数,
    不过你的外部动态库的形式必须要固定,进行间接的条用,例如
    procedure AAAAA(Sender:TObject);
    begin
     if ... then
      PROCSelf(var a:string....);//自定义的执行外部函数的过程,参数为用户输入的
    if ..... 
               
    end;只要你搞懂了函数指针,这个东西很容易理解的