社区
语言基础/算法/系统设计
帖子详情
请问tform2.Create(nil)中的nil是什么意思啊?马上揭贴
架构之路
2005-10-27 05:52:14
with tform2.Create(nil) do
try
showmodal;
finally
free;
end;
我一般用
if form1=nil then
form1:=TForm.Create(self)
前种方法中的nil是什么意思,前种方法和我的方法那一个更好呀??感谢答疑解惑
...全文
248
6
打赏
收藏
请问tform2.Create(nil)中的nil是什么意思啊?马上揭贴
with tform2.Create(nil) do try showmodal; finally free; end; 我一般用 if form1=nil then form1:=TForm.Create(self) 前种方法中的nil是什么意思,前种方法和我的方法那一个更好呀??感谢答疑解惑
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
XDvlper
2005-10-28
打赏
举报
回复
首先,nil是空指针;其次控件的默认构造函数是Create(AOwner: TComponent),AOwner是要创建控件的拥有者,即控件创建后会加入到AOwner的控件列表中,此时控件的生存期可以交给AOwner控制,在AOwner释放时,会将它的控件列表中的所有控件释放,如果这时你自己维护控件的生存期,在AOwner释放之前,将控件释放了,会导致AOwner在释放控件时导致异常,只不过它自己吞掉了,而且影响效率。如果指定AOwner为nil,那么就是说控件的生存期没有东西可以帮你维护,你只能自己去维护。
xiaocuo_zrf
2005-10-28
打赏
举报
回复
with tform2.Create(nil) do
try
showmodal;
finally
free;
end;
-----------
TForm2进行实例化的时候没有指定他的属主。
因为是ShowModal的窗体,所以
用With do 引起来,在Finally后手动释放
如果 form1:=TForm.Create(self)
表示 Form1的属主是你这个Self 当Self释放的时候 Form1也被释放了
//
详细资料参看刘艺《Delphi面向对象编成思想》
架构之路
2005-10-28
打赏
举报
回复
释放是不是在form.close时进行的啊?
sunnysmile
2005-10-28
打赏
举报
回复
没有指定属主!
xixuemao
2005-10-27
打赏
举报
回复
传nil说明需要自己管理你form的释放
不传nil说明不用自己释放form,你form的所有者会帮你释放
个人倾向与自己释放的方式。
solokey
2005-10-27
打赏
举报
回复
自己释放写nil就可以了..
Create(AOwner:TComponent);
AOwner就是它的所有者..所有者释放时也会释放该组件..
如果为nil,就需要手动释放该组件了.
至于怎么用.你自己权衡就可以了..
Script FastScript
DB
Form
:= T
Form
.
Create
(
nil
); DB
Form
.SetBounds(100, 100, 400, 400); Table := TTable.
Create
(DB
Form
); Table.DatabaseName := 'DBDEMOS'; Table.TableName := 'customer.db'; Table.Open; DataSource :...
delphi动态 WebBrowser 释放问题.txt
procedure T
Form
1.Button2Click(Sender: TObject); begin // web.Destroy; web.Free ; end; procedure T
Form
1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); ...
delphi动态 WebBrowser 释放问题.rar
procedure T
Form
1.Button2Click(Sender: TObject); begin // web.Destroy; web.Free ; end; procedure T
Form
1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); ...
使用vlc styles改变opendialog
delphi11
中
使用style,dialog
中
list和edit类不失效,使用style扩展类可以解决。 procedure T
Form
1.BitBtn10Click(Sender: TObject); var Dialog: TFileOpenDialog; begin UseLatestCommonDialogs := false; ...
delphi
中
使用FastScript执行pascal脚本的demo
ScriptEngine := TfsScript.
Create
(
nil
); try // 加载 DLL DLLHandle := LoadLibrary('YourDLL.dll'); if DLLHandle <> 0 then begin try // 获取函数地址 @AddFunc := GetProcAddress(DLLHa
语言基础/算法/系统设计
16,749
社区成员
33,245
社区内容
发帖
与我相关
我的任务
语言基础/算法/系统设计
Delphi 语言基础/算法/系统设计
复制链接
扫一扫
分享
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章