当前位置: 首页 > 学习 > 电脑学习 > 程序设计 > Delphi > 实例分析 > 正文

窗体的建立时机及缓冲的思想在ini文件中的应用

http://www.zk168.com.cn  招考学习网 2006-4-7 9:48:00
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
1 窗体建立的时机问题
由于窗体属于比较占系统内存的对象,所以在应用程序中何时建立窗体就变得比较重

要。
窗体的建立时机有一下几种:
(1)、在主窗体建立时自动建立窗体
(2)、在需要的时候才建立窗体,然后窗体关闭时也不销毁窗体
(3)、在需要的时候才建立窗体、然后窗体关闭时销毁窗体
第一种方式是delphi默认的实现方式,但是除了主窗体之外的其他窗体如果不是在每

次使用应用程序的时候都一定用到,那么就不要让窗体自动建立。不要让窗体自动建

立的方法是:点击主菜单中“project”-“option”,然后在弹出的对话框中将你不

想自动建立的窗体名从Auo-create forms中拖到Available forms中去。
第二种方式适用于每次使用应用程序的时候不一定都用到,但是一旦用到那么以后会

用到多次,例如数据库程序中的“数据查找”对话框、网页制作软件中的“设定文字

超连接”对话框。
示例代码:
在主窗体的 private 部分加入
FHouseTypeFrm: THouseTypeDlg;//THouseTypeDlg是自定义的一个窗体类
在您激活窗体的地方加入
if not Assigned(FHouseTypeFrm) then
FHouseTypeFrm := THouseTypeDlg.Create(self);
FHouseTypeFrm.ShowModal;

第三种方式适用于一般情况下不会用到,即使用到也不会在程序中多次调用。例如“

关于”对话框,“系统设置”对话框等。
示例代码:

var
FUserManageFrm: TUserManageForm;//TUserManageForm是自定义的一个窗体类
begin
FUserManageFrm := TUserManageForm.Create(nil);
FUserManageFrm.SetCurrentUserName(FUsername);
FUserManageFrm.ShowModal;
FreeAndNil(FUserManageFrm);
end;

2 缓冲的思想在ini文件中的应用

下列代码是我们在用ini文件读写系统配置常用的方法:
procedure TConfigMgr.SetDBBackupFileName(AValue: string);
begin
FIniFile.WriteString('DBBackup', 'DBFileName', AValue);
end;

function TConfigMgr.GetDBBackupFileName: string;
begin
result := FIniFile.ReadString('DBBackup', 'DBFileName',
FRootPath + 'DBBackup.mdf');
end;

因为读写磁盘文件是比较占用系统资源的操作,所以能够不读写硬盘就不读写,可以

学习操作系统中缓冲区的概念来改进配置文件的读写。如果在读取系统配置之前已经

读取过了那么只要返回上次读取的值就可以了,不用再去读硬盘;在向配置文件前将

配置的值与上次的值比较,如果相同就没有必要写配置文件了。

type
TConfigMgr = class
private
FIniFileName: string;
FIniFile: TIniFile;
FRootPath: string;
FFormerDBBackupFileName: string;
procedure SetDBBackupFileName(AValue: string);
function GetDBBackupFileName: string;
public
……
published
property DBBackupFileName: string read GetDBBackupFileName write

SetDBBackupFileName;
end;

implementation
……
procedure TConfigMgr.SetDBBackupFileName(AValue: string);
begin
if FFormerDBBackupFileName <> AValue then
begin
FIniFile.WriteString('DBBackup', 'DBFileName', AValue);
FFormerDBBackupFileName := AValue;
end;
end;

function TConfigMgr.GetDBBackupFileName: string;
begin
if FFormerDBBackupFileName <> '' then
result := FFormerDBBackupFileName
else
result := FIniFile.ReadString('DBBackup', 'DBFileName',
FRootPath + 'DBBackup.mdf');
end;

-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
最新入库:
 
·实质、过程及意义——阿多尔诺“否定的辩证法”探微
·从Ontology的译名之争看哲学术语的翻译原则
·论马克思主义哲学经典的解释——解释学方法及其在马克
·中国哲学当前的核心与周边问题
·和合学与21世纪文化价值和科技
·中国文化的和合精神与21世纪
·宗教之间理当相互宽容
·上半个世纪的自由主义
·殷周至春秋时期神人关系之演进
·大学之道:构建以“三纲八目”为核心的道德修养体系
相关内容:
 
·儒家与供给学派轻税思想的比较
·浅谈加入WTO对公路职工思想的影响及对策
·医院信息系统开发的新思想与新方法
·关于修船企业ERP系统的设计思想
·色诺芬的公共财政思想及启示
·秘书人员的思想作风
·2002年年度个人思想工作总结
·民主评议思想工作小结
·思想政治工作汇报
·领导班子思想政治建设工作总结
网友点评:
 
会员名称:
密码:匿名 ·注册·忘记密码?
评论内容:
(最多300个字符)
  查看评论
友情提醒:
 1.库中的资料大都来自互联网、网友上传、各类书籍,在录入的过程中难免会出现错误,恳请网
 友来信指正!
 2.如果网友在本库中未能找到所需要的材料,请登陆到我们的论坛《招考学习网》版块!
 3.考友想加入招考学习网的编辑部,请发信到XueXiWang#Gmail.com(#改为@)附带个人简历
 4.如需转载请注明出处及作者,谢谢合作!
 5.如果您有更好的建议或意见请EMAIL:XueXiWang#Gmail.com (#改为@)
 6.凡标题中有注有“[NO]”字样均不含答案且答案整理中.
 7.如本库中转载文章涉及版权等问题,请相关网站或作者在两周内发邮件通知(EMAIL:  XueXiWang#Gmail.com (#改为@))我们,我们接到通知后立即删除该文章及链接!
你问我答 更多>>