电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

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


发布日期:2023/12/14
 
窗体建立的时机问题

由于窗体属于比较占系统内存的对象所以在应用程序中何时建立窗体就变得比较重要窗体的建立时机有一下几种

)在主窗体建立时自动建立窗体

)在需要的时候才建立窗体然后窗体关闭时也不销毁窗体

)在需要的时候才建立窗体然后窗体关闭时销毁窗体

第一种方式是delphi默认的实现方式但是除了主窗体之外的其他窗体如果不是在每次使用应用程序的时候都一定用到那么就不要让窗体自动建立不要让窗体自动建立的方法是点击主菜单中projectoption然后在弹出的对话框中将你不想自动建立的窗体名从Auocreate forms中拖到Available forms中去

第二种方式适用于每次使用应用程序的时候不一定都用到但是一旦用到那么以后会用到多次例如数据库程序中的数据查找对话框网页制作软件中的设定文字超连接对话框

示例代码

在主窗体的 private 部分加入

FHouseTypeFrm: THouseTypeDlg;//THouseTypeDlg是自定义的一个窗体类

在您激活窗体的地方加入

if not Assigned(FHouseTypeFrm) then

FHouseTypeFrm := THouseTypeDlgCreate(self);

FHouseTypeFrmShowModal;

第三种方式适用于一般情况下不会用到即使用到也不会在程序中多次调用例如关于对话框系统设置对话框等

示例代码

var

FUserManageFrm: TUserManageForm;//TUserManageForm是自定义的一个窗体类

begin

FUserManageFrm := TUserManageFormCreate(nil);

FUserManageFrmSetCurrentUserName(FUsername);

FUserManageFrmShowModal;

FreeAndNil(FUserManageFrm);

end;

缓沖的思想在ini文件中的应用

下列代码是我们在用ini文件读写系统配置常用的方法

procedure TConfigMgrSetDBBackupFileName(AValue: string);

begin

FIniFileWriteString(DBBackup DBFileName AValue);

end;

function TConfigMgrGetDBBackupFileName: string;

begin

result := FIniFileReadString(DBBackup DBFileName

FRootPath + DBBackupmdf);

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 TConfigMgrSetDBBackupFileName(AValue: string);

begin

if FFormerDBBackupFileName <> AValue then

begin

FIniFileWriteString(DBBackup DBFileName AValue);

FFormerDBBackupFileName := AValue;

end;

end;

function TConfigMgrGetDBBackupFileName: string;

begin

if FFormerDBBackupFileName <> then

result := FFormerDBBackupFileName

else

result := FIniFileReadString(DBBackup DBFileName

FRootPath + DBBackupmdf);

end;

上一篇:进销存管理系统:编制报表程序[1]

下一篇:软件启动画面中启动状态的显示