如何在程序中动态产生对象(如:button等)(50分)

  • 主题发起人 主题发起人 hrt
  • 开始时间 开始时间
H

hrt

Unregistered / Unconfirmed
GUEST, unregistred user!
我在程序中成功产生了button,但不能定义其onclick事件请指教。
var
dd:tbutton;
begin
dd:=tbutton.create(self);
dd.parent:=self;
dd.caption:='ok';
dd.top:=120;
dd.left:=100;
dd.width:=30;
end;

 
tyourclass=class(tobject)
private
procedure MyClick(Sender:TObject);
end;

tyourclass.MyClick(Sender:TObject);
begin
{....}
end;



var
dd:tbutton;
begin
dd:=tbutton.create(self);
dd.parent:=self;
dd.caption:='ok';
dd.top:=120;
dd.left:=100;
dd.width:=30;
<font color=red>dd.Onclick:=Myclick;</font>
end
 
拣分了!!!
定义一个过程
procedure OnClickProc(Sender: TObject);
begin
...
end;

然后
dd.Onclick:=OnClickProc

给分!!!
 
沈前卫竟然比我快?!
 
wrench:
为什么不能比你快! ^_^
 
我最慢了。呜……呜…… (谁在哭,不是我了)
 
wrench的方法比沈前卫的好:-)
为了处理一个事件,就得自己派生一个类,太过分了吧!
 
左轻侯:
Only for example!!!
 
wrench的方法可能会不能运行!

因为如果方法声明成for object,则必须使用类对象的方法,才能赋给otherObject.onclick. :)

试试就明白了。
 
wrench的方法似乎行不通
一定要对象方法指针才能赋值给事件,也就说自定义事件方法只能放在类里面。
 
在窗体类中定义过程就行
type
Tform=class(tform)
procedure OnClickProc(Sender: TObject);
而对应的应为
procedure tform1.OnClickProc(Sender: TObject);
 
Jetiteas说的对,昨天一时疏忽
应如阿蒙所言
Sorry
 
后退
顶部