转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
窗体的建立时机及缓冲的思想在ini文件中的应用.txt         ★★★★

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:724 更新时间:2009/4/23 18:35:20

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;


[常用软件]制作适合MP3、手机阅读的TXT电子书  [网页制作]Robots META标签和robots.txt文件
[网页制作]robots.txt禁止搜索引擎收录的方法  [网页制作]robots.txt 指南-介绍
[Web开发]如何写robots.txt 文件?  [Web开发]搜索引擎指南robots.txt文件
[SyBase]jfreechart图表在linux上运行不显示的问题.txt  [MySql]配置jsp+mysql.txt
[搜索优化]Robots.txt指南  [搜索优化]robots.txt和RobotsMETA标签
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台