M mimiafei Unregistered / Unconfirmed GUEST, unregistred user! 2008-11-09 #1 想在动态生成的Button 的事件中释放自己,可以没有?急
B bsense Unregistered / Unconfirmed GUEST, unregistred user! 2008-11-09 #2 procedure button1click(sender...) var myform :tmyform; begin try myform := tmyform(application); myform.showmodal; //myform.show //mdi子窗口是不能free的 finally myform.free;
procedure button1click(sender...) var myform :tmyform; begin try myform := tmyform(application); myform.showmodal; //myform.show //mdi子窗口是不能free的 finally myform.free;
K kinneng Unregistered / Unconfirmed GUEST, unregistred user! 2008-11-09 #3 可以的,事件处理过程与按钮无关,按钮是否动态创建也无所谓。 procedure button1click(sender:TObject); begin button1.free; ... end;
M mimiafei Unregistered / Unconfirmed GUEST, unregistred user! 2008-11-09 #4 举个简单的例子:我在form1上建一个button1 ,onclick事件是在form1上建立一个动态button ,属性name赋值为mybtn,事件定义为form2.show。在form2上建立一个button1,事件定义为删除在form1上建立的动态控件,语句为:TButton(form1.FindComponent('mybtn')).Free; 语句没问题,也执行了删除,但form2在关闭时报错,请帮分析一下。谢谢!
举个简单的例子:我在form1上建一个button1 ,onclick事件是在form1上建立一个动态button ,属性name赋值为mybtn,事件定义为form2.show。在form2上建立一个button1,事件定义为删除在form1上建立的动态控件,语句为:TButton(form1.FindComponent('mybtn')).Free; 语句没问题,也执行了删除,但form2在关闭时报错,请帮分析一下。谢谢!
M mimiafei Unregistered / Unconfirmed GUEST, unregistred user! 2008-11-09 #8 form1 的代码 onbuttonclick已经申明 procedure TForm1.Button1Click(Sender: TObject); begin with Tbutton.Create(self)do begin parent:=self; left:=100; top:=100; width:=200; name:='mybtn'; caption:='111'; onclick:=onbuttonclick; end; end; procedure TForm1.onButtonClick(Sender: TObject); begin form2.ShowModal; end; form2的代码: procedure TForm2.Button1Click(Sender: TObject); begin TButton(form1.FindComponent('mybtn')).Free; end;
form1 的代码 onbuttonclick已经申明 procedure TForm1.Button1Click(Sender: TObject); begin with Tbutton.Create(self)do begin parent:=self; left:=100; top:=100; width:=200; name:='mybtn'; caption:='111'; onclick:=onbuttonclick; end; end; procedure TForm1.onButtonClick(Sender: TObject); begin form2.ShowModal; end; form2的代码: procedure TForm2.Button1Click(Sender: TObject); begin TButton(form1.FindComponent('mybtn')).Free; end;
W wql Unregistered / Unconfirmed GUEST, unregistred user! 2008-11-10 #9 不行,必须设置为全局空间变量! 例如 Var myfm: Tform; MyBtn: TButton; 其他的语句!
G guqiu Unregistered / Unconfirmed GUEST, unregistred user! 2008-11-10 #10 procedure TForm1.onButtonClick(Sender: TObject); begin form2.ShowModal; end; 改成form2.Show;就好了
M mimiafei Unregistered / Unconfirmed GUEST, unregistred user! 2008-11-10 #11 wql的办法行不通。guqiu的可以了。如果我使用form2.showmodal,还有其他办法没有?谢谢!晚上可以放分了。
N newnewer Unregistered / Unconfirmed GUEST, unregistred user! 2008-11-10 #12 你干嘛要释放自己呐?mybtn已经加入到了form2的Components里了,form2释放的时候,自然会自动释放mybtn,不是多此一举吗?
N newnewer Unregistered / Unconfirmed GUEST, unregistred user! 2008-11-10 #13 var but:tbutton; but:=tbutton(form1.FindComponent('mybtn')); freeandnil(but); 这样或许可以解决,不是很确定