Delphi

本类阅读TOP10

·游戏外挂设计技术探讨①
·如何使用Delphi设计强大的服务器程序
·分布式网络考试系统原型分析及实现
·用DLL方式封装MDI子窗体。
·使用HOOK随心监视Windows
·Delphi 水晶报表打包解决
·url编码与解码工具附代码
·工人线程中关闭窗体的实现
·hdsi2.0 sql注入部分抓包分析语句
·Borland Delphi 2005 下载

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
窗体的建立时机及缓冲的思想在ini文件中的应用.txt

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

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;




相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有