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标签
|