社区
语言基础/算法/系统设计
帖子详情
请问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是什么意思,前种方法和我的方法那一个更好呀??感谢答疑解惑
...全文
251
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
作业
写回复
配置赞助广告
用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
var DB
Form
: T
Form
; Table: TTable; DataSource: TDataSource; Grid: TDBGrid; begin 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 := TDataSource.
Create
(DB
Form
); DataSource.DataSet := Table; Grid := TDBGrid.
Create
(DB
Form
); Grid.DataSource := DataSource; Grid.Parent := DB
Form
; Grid.Align := alClient; DB
Form
.ShowModal; DB
Form
.Free; end.
使用vlc styles改变opendialog
delphi11
中
使用style,dialog
中
list和edit类不失效,使用style扩展类可以解决。 procedure T
Form
1.BitBtn10Click(Sender: TObject); var Dialog: TFileOpenDialog; begin UseLatestCommonDialogs := false; Dialog := TFileOpenDialog.
Create
(
nil
); Dialog.DefaultFolder:='c:\'; try Dialog.Options := Dialog.Options + [fdoPickFolders]; // 设置对话框选项,只显示文件夹选项 if Dialog.Execute then begin // 用户选择了文件夹 ShowMessage(Dialog.FileName); // 显示所选文件夹路径 end; finally Dialog.Free; end; end; procedure T
Form
1.
Delphi 7 屏幕保护开关程序代码.rar
Delphi 7开关屏幕保护程序源代码,比较简单的那种,用于控制系统的屏幕保护是否开启或关闭的功能,以下是部分代码片段: begin Ini:=TInifile.
Create
('system.ini'); ScreenSaverFile:='屏幕保护程序:' GetLongFileName(Ini.ReadString('boot','SCRNSAVE.EXE','Not Available')); Ini.Free; Label1.Caption:=ScreenSaverFile; end; procedure T
Form
1.Button2Click(Sender: TObject); begin if TurnScreenSaverOn then SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,0,
nil
,0); if not TurnScreenSaverOn then SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,1,
nil
,0); end; 完整源码请下载本源码包。
delphi实现两个listview之间的item拖拽
delphi实现两个listview之间的item拖拽的源码
delphi vclzip,vclunzip组件
用于解压,压缩的第三方组件,比zlib强大,因为他可以解压文件夹之类的,不仅仅解压单个文件。
语言基础/算法/系统设计
16,747
社区成员
33,239
社区内容
发帖
与我相关
我的任务
语言基础/算法/系统设计
Delphi 语言基础/算法/系统设计
复制链接
扫一扫
分享
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章