社区
Delphi
帖子详情
小问题。
simonzone
2002-08-05 01:09:50
form.Create(self) 与 form.create(application) 有什么区别吗?
...全文
76
5
打赏
收藏
小问题。
form.Create(self) 与 form.create(application) 有什么区别吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chao_jian
2002-08-05
打赏
举报
回复
很好,顺便展开一个问题,请指教:
Owner和Parent属性都和内存管理有关,那么它们之间在这方面存在存在哪些区别?谢谢!
hellenlong
2002-08-05
打赏
举报
回复
来晚了.
up
dreamfan
2002-08-05
打赏
举报
回复
有道理
王集鹄
2002-08-05
打赏
举报
回复
http://www.delphibbs.com/delphibbs/dispq.asp?lid=834435
http://www.delphibbs.com/delphibbs/dispq.asp?lid=791383
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1133232
问题:请问Application、Self和nil有什么区别? ( 积分:45, 回复:7, 阅读:52 )
分类:控件 - 使用 ( 版主:amo, cAkk )
来自:11830, 时间:2002-5-30 15:15:00, ID:1133232 [显示:小字体 | 大字体]
请问我在动态建立控件时使用的Application、Self和nil有什么区别
TempAQ_GetAllSum:=TADOQuery.Create(Application);
或
TempAQ_GetAllSum:=TADOQuery.Create(Self);
或
TempAQ_GetAllSum:=TADOQuery.Create(nil);
来自:Alex_Y, 时间:2002-5-30 15:24:00, ID:1133255
我是这么理解的( 不一定说的对 ):
Application 是应用程序的属性意为在应用中创建ADOQUERY对象
Self 很简单,就是创建自己
nil 为空?这样也可以吗?没试过
来自:LGXing, 时间:2002-5-30 15:31:00, ID:1133275
我是这么理解的( 不一定说的对 ):
Application 属于此应用程序的对象
Self 属于当前窗体
nil 自成一体
来自:11830, 时间:2002-5-30 15:34:00, ID:1133288
谢谢你们的回复!
哪它们在使用上有什么区别呢?
我现在也不清到底用哪个好,有时用application,有时用nil。
请问您们都怎么用这个?
来自:Archerfl, 时间:2002-5-30 16:28:00, ID:1133377
TADOQuery.Create(AOwner: TComponent);是对其祖先类TComponent的构造器的覆盖。
其中AOwner是指你所创建的对象的拥有者。如本例,假如是Application,那么此时拥有者
为整个应用程序对象Application。同理self则拥有者为当前窗体对象,nil则不存在拥有者。
其实,你在写代码时这几种方式都可以,区别仅在与:当你用Application做拥有者时,那么
该对象假如你不是用Free方法手动释放内存的,那么就要等到Application对象被释放时,它
才会一起被释放;而你用self时,则要等到该窗体对象释放时,它才一起被释放;nil,则它
要等到整个应用程序被释放时,它才会被释放。
不过,你应尽可能养成不用时释放对象的习灌,以防出现内存泄漏!
来自:Anubis99, 时间:2002-5-30 16:40:00, ID:1133411
Archerfl说的很正确
来自:11830, 时间:2002-5-31 8:45:00, ID:1134395
接受答案了.
来自:11830, 时间:2002-5-31 8:50:00, ID:1134409
好像明白了,谢谢!
来自:archy, 时间:2001-12-16 1:14:00, ID:791383 [显示:小字体 | 大字体]
动态创建一个窗口时form1:=Tform1.create(Application)
form1:=Tform1.create(nil);和
form1:=Tform1.create(self)有何区别?似乎一样的吗
来自:乌龙茶, 时间:2001-12-16 1:19:00, ID:791384
用application 作为参数,则由application负责释放当前窗体
如果用self则由当前类负责释放
如果用nil则由你自己负责释放,否则将会造成内存泄漏
来自:QY208, 时间:2001-12-16 2:22:00, ID:791424
同意楼上
来自:barton, 时间:2001-12-16 5:13:00, ID:791438
不完全正确.
1.使用Application作为参数时的确可以由Application来释放.但你不能依赖Application
去释放.因为只有Application释放的时候才会去释放没有被释放的类.可是你能等到那个时
候吗?你能容忍一个没有用处的类占用宝贵的资源吗?所以常常是即用即撤.不过可以保证没
有内存泄漏是真的.
2.nil参数建立窗体时必须主动释放.在动态建立DLL中的窗体时,使用Application常常出错.
这时候只能用nil作为参数,或者用Application.Handle作为参数,以保证在同一个消息体系
中.
3.使用Self作为参数几乎是错误的.一是,这种用法只能在粝方法中处理,如何这个类不是个
窗体容器的话,毫无意义.至少如果这个Self如果是个TForm的话,难保不出错.
来自:zouming, 时间:2001-12-16 9:11:00, ID:791455
agree to barton
来自:archy, 时间:2001-12-22 14:37:00, ID:804407
to barton:
非常感谢,但是我的《Mastering Delphi 5》中说
动态建立MDIchild时是frmChild:=TfrmChild.create(self);不知您认为如何
来自:树熊132, 时间:2002-1-4 15:25:00, ID:834435 [显示:小字体 | 大字体]
谁能告诉我form.create(self)与form.create(nil)的区别
来自:jiangxiancheng, 时间:2002-1-4 15:37:00, ID:834468
所有者不一样。
来自:taozhiyu, 时间:2002-1-4 15:41:00, ID:834478
AOwner is the owner of the TCustomForm object.
来自:wonsfon, 时间:2002-1-4 16:28:00, ID:834592
xx.create(AOwner)之后,当AOwner被释放时xx也被自动释放
xx.create(nil)之后,你在程序结束时必须手工释放xx
来自:lujr, 时间:2002-1-4 16:32:00, ID:834600
WONSTON的说法是对的。
xx.create(AOwner)之后,当AOwner被释放时xx也被自动释放
xx.create(nil)之后,你在程序结束时必须手工释放xx
来自:yhaochuan, 时间:2002-1-4 16:48:00, ID:834643
wonsfon说得对,
如果你在一个FORM中动态建立另一个FORM2,那么建议用
procedure form1.button1.click(sender:tobject);
begin
if form2 = nil then
form2 := tform2.create(self);
form2.showmodal;
end;
njbudong
2002-08-05
打赏
举报
回复
用self创建的Form是私有的,在关闭的时候是资源释放的;
用application创建的Form是不释放的,只有在应用程序关闭的时候才释放。
解决api-ms-win-crt-runtime-l1-1-0.dll 丢失
问题
绿色版 工具下载
提示api-ms-win-crt-runtime-l1-1-0.dll 丢失,安装这个小玩意就可以解决了
C#实现摄像头控制
在WIN7操作系统中, 资源管理器里面已经无法打开摄像头了, 这个小工具使用AForge类库实现C# 操作摄像头, 代码超级简捷 , 5行核心代码解决
问题
所有
问题
.
微信小程序系统教程C#版[3/3阶段]_微信小程序电商系统
微信支付,这部分课程很有难度,要求同学们认真听讲,有不会的技术
问题
可以请教老师。购买课程后请联系老师,提供单号,给你源程序。 九宝电商系统是一套十分适和学习、项目的课程。既可以系统的学习微信小程序相关...
微信小程序发现的一些小
问题
以及解决方案集合以及注意点
最近一直在关注小程序开发,目前正在试着将公司的app转换为小程序执行,在此期间有遇到的一些小
问题
以及解决办法集合。当然这些都是我个人经验谈,对于小程序的底层框架我也是一知半解,很多也都无法解释的很清楚,...
vmware虚拟机显示屏幕太小
问题
解决
mware虚拟机显示屏幕太小的
问题
可以通过安装"VMware Tool"来解决,安装该插件后,你就可以根据自身需要自由切换显示屏幕的尺寸,还可以和本机进行相互间的拷贝操作,这里以vSphere Client中的VM虚拟机Ubuntu为例,...
Delphi
5,386
社区成员
262,729
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章