1窗体建立的时机问题 由于窗体属于比较占系统内存的对象所以在应用程序中何时建立窗体就变得比较重要窗体的建立时机有一下几种 ()在主窗体建立时自动建立窗体 ()在需要的时候才建立窗体然后窗体关闭时也不销毁窗体 ()在需要的时候才建立窗体然后窗体关闭时销毁窗体 第一种方式是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; 2缓沖的思想在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; |