如上
解决方案 »
- QQWeb输入法(QQ云输入法)悄然发布
- 初学。怎么把EXCEL转换成文本.txt的?100
- DSPack做视频播放器时的一个问题。
- win98编的程序在win2000上用不了????
- 我想做安装程序,不会装载配置文件(BDE和三层ADO连接、SQL Server数据库后台)请大家帮忙!
- 求教高手指点:Client为什么不能打开激活,十万火急,谢谢各位了,代码如下。
- 送分!!!送分!!!推荐几本Delphi入门的好书?
- 一个控制客户端数量的问题?
- TMemoryStream有什么作用
- 需要Delphi5.0密码
- ◆◆◆◆◆◆这是为什么呀,谁知道我错在那里呀!!!◆◆◆◆◆
- 怎么检测到电脑正在播放音乐,只要能检测到就可以了!
Create(self)由管理它的窗体释放(其实我理解是调有它的窗体释放)
Create(nil)就学要由你自己释放了
Create(Application) 是由你的程序来释放的
nil :没有拥有者,需要程序设计者手动释放
Application :工程释放以后,对象释放
create(self):由自己释放
create(nil):必须手动释放
create(application):窗体不需要自己释放,由Application负责释放
根据VCL FrameWork TForm 是从 TComponent继承下来的
其中 Constructor TComponent.Create(AOwer:TComponent);Vitrual;
就是个虚方法其中AOwer就是指定控件的所有者
如果你是在当前窗体中加如控件,但是不知道什么时候释放,此时就可以
用Create(Self)交给Delphi编译器去管理对象的生命周期,这是就不用手动去释放对象了。
如果你知道对象的生命周期此时你可以用Create(nil)自己手动去释放对象了
如果你要创建的对象的生命周期是整个的应用程序此时你就要使用
Create(Application)交给应用程序去管理了对象的释放机制了
nil
Application
就不一样,好好体会这几个词就不同了。
那么当XX被释放时,XX会帮你释放X,这样你就不需要自己释放X了,如
Form1:=TForm1.create(Form2);
那么当Form2 free时,它就会自动帮你释放Form1,你就不用自己释放Form1了。