拿按钮控件来说,我们有两种使用它的方法,一个是在设计阶段在窗体上放一个按钮控件,另外一种方法是在运行阶段用代码来生成 如下
myb:=Tbutton.create(self);
最后还要free
我的问题
1\self是什么意思 还有如果上面的代码写成myb:=Tbutton.create(Application);好像也行,这个self和application之间有什么区别? 2\如果是设计阶段生成的控件,他是怎么FREE的,是不是自己自动Free?3\如果是第二种方法在运行阶段通过代码生成控件,那么怎么编写这个控件的事件处理代码?比如我想实现在通过运行阶段用代码生成的按钮上单击然后弹出一个对话框,怎么来实现,就是这个问题困扰了我很长时间4\这两种方法有没有什么实质上的区别,我现在想在一个程序里动态生成数据库的Tadoquery控件,如果这么做会带来什么局限性?问题挺多的,不好意思
myb:=Tbutton.create(self);
最后还要free
我的问题
1\self是什么意思 还有如果上面的代码写成myb:=Tbutton.create(Application);好像也行,这个self和application之间有什么区别? 2\如果是设计阶段生成的控件,他是怎么FREE的,是不是自己自动Free?3\如果是第二种方法在运行阶段通过代码生成控件,那么怎么编写这个控件的事件处理代码?比如我想实现在通过运行阶段用代码生成的按钮上单击然后弹出一个对话框,怎么来实现,就是这个问题困扰了我很长时间4\这两种方法有没有什么实质上的区别,我现在想在一个程序里动态生成数据库的Tadoquery控件,如果这么做会带来什么局限性?问题挺多的,不好意思
TForm1.myProcedure(Sender: TObject);
begin
end;
============================ myb:=Tbutton.create(self);
myb.OnClick = myProcedure;4、没有不同
procedure TFrmMain.Myclick(sender: TObject);
begin
showmessage('test');
end;...
var Mybutton: TButton;
Mybutton := TButton.create(self);
mybutton.onclick := myclick;...4,静态生成的控件往往会在整个程序执行期间占用内存控件;而动态生成的控件则一般会在使用完毕后马上释放;两者区别就是生存周期不同;占用内存也就不同了;^_^