熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

窗體的建立時機及緩沖的思想在ini文件中的應用

2013-11-23 17:45:05  來源: Delphi編程 
  窗體建立的時機問題

  由於窗體屬於比較占系統內存的對象所以在應用程序中何時建立窗體就變得比較重要窗體的建立時機有一下幾種

  ()在主窗體建立時自動建立窗體
  ()在需要的時候才建立窗體然後窗體關閉時也不銷毀窗體
  ()在需要的時候才建立窗體然後窗體關閉時銷毀窗體

  第一種方式是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;


From:http://tw.wingwit.com/Article/program/Delphi/201311/25016.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.