模態窗體與非模態窗體

區別

    模態與非模態窗體的主要區別是窗體顯示的時候是否可以操作其他窗體。模態窗體不允許操作其他窗體,非模態窗體可以操作其他窗體。

 

實現

   在Delphi中,window.show 實現非模態窗體,window.showModel創建的是非模態窗體

   有時爲了讓非模態窗體一直顯示着,就需要將窗體的formStyle設置爲StayOnTop.如果這種方式不行的話,可以採用CreateParams函數實現,如下:

例如

procedure TGCLSearchEdoForm.CreateParams(var Params: TCreateParams);
begin
  inherited;
  With Params do
  begin
    //給窗體設置總顯示在前方  form的stayontop有時會混亂
    WndParent := Application.MainForm.Handle;
    //Params.ExStyle := WS_EX_TOPMOST;  

  end;
end;

 

其他收穫

①delphi讀取硬盤的空間大小等數據可以採用GetDiskFreeSpaceEx函數,原型如下:

  GetDiskFreeSpaceEx: function (Directory: PChar; var FreeAvailable,
    TotalSpace: TLargeInteger; TotalFree: PLargeInteger): Bool stdcall = nil;

 第一個參數表示磁盤路徑,第二個參數是返回的可用磁盤空間大小,第三個參數返回的是總共磁盤大小,第四個參數表示剩餘空間大小。

舉例說明:

   GetDiskFreeSpaceEx(PChar('C:\'),iFreeDiskSpace, iTotalDiskSpace, @iTotalSpace)

 

②ShellExecute(0, 'open', PChar(ABackupRootPath), nil, nil, SW_NORMAL)即採用shell命令打開一個目錄

 

經歷

    將選擇圖元刪除窗體從模態窗體變爲非模態窗體;

    同步鋼筋代碼:磁盤滿後提示

 

今日遺留問題

   非模態窗體被focus的時候數據沒有及時刷新,請問如何刷新?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章