问个白痴问题 DELPHI 能否实现动态代码? 简单点 在运行期 我动态的加上了一堆组件 可不可以给它们的事件中加上执行代码怎么做呢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我也没试过,不过思路应该如下:procedure Form1.aProcedure(...);begin...end;var aButton : TButton;begin try aButton := TButton.Create(From1); aButton.Onclick := aProcedure(...); except end;end; 可以例如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);beginBtn.Free;end;end. 按钮的你要控制的事件的类型必须和你自己写的过程类型相同,例如上面,自定义AAAAA过程其实是TNotifyEvent类型的方法指针 但是这样 我还是要先把AAAA写好 如果一函数的形式 让拥护输入各个参数来生成可以吗 这样我还是不明白 比如我要在运行期删除一个在运行期生成的组件 当然这点代码是我现在设计的时候写的 那我现在编译的时候那个组件并没有生成我如何用它的name来操作它啊编译的时候会找不到对象出错的 难道所有的动态操作都用数组? 删除组件时用控件名(string型)去查找,如果找到同名且同类型的控件则Free掉。 to : dh9450(谁有我菜) ( ) ,你的要求我不太明白,不过你可以写一个执行外部动态库的函数,不过你的外部动态库的形式必须要固定,进行间接的条用,例如procedure AAAAA(Sender:TObject);begin if ... then PROCSelf(var a:string....);//自定义的执行外部函数的过程,参数为用户输入的if ..... end;只要你搞懂了函数指针,这个东西很容易理解的 菜鸟有关XML的问题!!! delphi5能实现,delphi6及以上版本就搞不定了,请高手帮忙! 如何改写以下c语句到DELPHI? 如何实现新浪围棋或联众游戏的用户登陆时的用户确认和密码检查? 有关POS机客显奇怪的问题 请问怎么知道,一个DBGRID的中显示的数据有多少条 请教个问题~~~~~~~ netlib 你好,我有留言,请查阅! ODAC 中的oraquery 有没有updatebatch 这个属性的? 请问那个城市需要DELPHI人才最多!!! 散分了!奉送DelphiX编写的游戏源码! 如果通过DateTimePicker的日期取得这个日期的所在周和这一周的周一和周日?
procedure Form1.aProcedure(...);
begin
...
end;var
aButton : TButton;
begin
try
aButton := TButton.Create(From1);
aButton.Onclick := aProcedure(...);
except
end;
end;
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.
自定义AAAAA过程其实是TNotifyEvent类型的方法指针
当然这点代码是我现在设计的时候写的 那我现在编译的时候那个组件并没有生成我如何用它的name
来操作它啊编译的时候会找不到对象出错的 难道所有的动态操作都用数组?
不过你的外部动态库的形式必须要固定,进行间接的条用,例如
procedure AAAAA(Sender:TObject);
begin
if ... then
PROCSelf(var a:string....);//自定义的执行外部函数的过程,参数为用户输入的
if .....
end;只要你搞懂了函数指针,这个东西很容易理解的