Delphi的對話框窗體


窗體也可以用作對話框,實際上,對於用戶來說,作為對話框的Delphi窗體與真正的對話框之間沒有區別的。

真正的對話框”意思是指用傳統方法建立起來的對話框,它有資源編譯器和資源腳本文件建立,在其他一些編程環境中其對話框就是用這種方式建立的,Delphi沒有用傳統的對話框)。

對話框有以下幾種特征,這正是與正常窗體的不同之處:

1、對話框通常不能調整大小,它們通常是用來完成一個特殊的功能,改變對話框的大小沒啥用處;

2、對話框幾乎總有一個OK按鈕,還有一些對話框有一個Close按鈕,此按鈕也是完成相同的任務,一個典型的簡單對話框只有一個OK按鈕,比如Delphi 7的About關於對話框就是這種對話框,如下:

0081

3、對話框可能有一個Cancel(關閉)按鈕和Help(幫助)按鈕;

4、有一種對話框是擴展標簽對話框(Tabbed dialog boxes),這種對話框顯示好幾個可供用戶選擇的標簽鈕,當點擊一個標簽鈕時,就會顯示對話框的不同頁面,例如Delphi 7主菜單【Tools | Environment Option…】對話框,如下:

0082

5、大部分對話框中,Tab鍵可以用來從一個控件移到另一個相鄰的控件;

6、對話框一般在標題欄上有一個系統關閉按鈕,它們通常沒有最小化和最大化按鈕。

每種規律都有例外,大部分對話框都有這些常用的特征,但也有一些對話框執行一些特別的任務,這樣它就會與這些正規的情況有這樣或那樣的不同。

 

Delphi方式對話框

Delphi中,對話框只是另一種形式的窗體,建立一個對話框就與建立一個主窗口窗體或其他窗體一樣。為了防止對話框縮放,需要設置Form的BorderStyle屬性為bsDialog或者bsSingle。通過改變對話框窗體上各個空間的TabOrder屬性,就可以改變Tab鍵切換次序。

模式(modal)對話框是一種在用戶繼續使用應用程序之前必須消失的對話框,當這種對話框打開時,應用程序主窗體要停止工作。大部分對話框都是模式對話框。

非模式(modeless)對話框是一中當顯示此對話框時,用戶可以繼續使應用程序工作的對話框。一些字處理程序中的Find對話框就是非模式對話框。

Delphi對話框(實際上就是任何Delphi窗體)是模式或非模式完全依賴它的顯示方式,為了顯示一個模式對話框,可以調用TForm的ShowModal方法,為了顯示一個非模式對話框,就要調用TForm的Show方法。

 

創建對話框窗體

1、打開在“最簡單的多重窗體的應用(Delphi)”中的示例程序,通過主菜單【File | Reopen】或者工具欄上“Open”按鈕旁邊的箭頭按鈕查看MRU(最近使用過的)清單,該清單分為上下兩部分。頂端部分為最近使用過的5個工程,而底部顯示的是最近使用過的10個文件,只需點擊這些工程或文件,就可以重新打開此工程或文件,如下圖:

0083

2、打開Multiple工程后,我們將這個工程的MainForm的Caption屬性修改為“About Dialog Forms Test Program”,btnShowForm2按鈕的Caption屬性修改為“Show About”;

3、通過工具欄的“View Forms”按鈕或者按Shift + F12顯示出SecondForm窗體,並將SecondForm窗體的BorderStyle屬性修改為“bsDialog”,Caption屬性修改為“About”;

4、在SecondForm窗體上放置一個Additional標簽卡上的BitBtn按鈕,並設置該按鈕的Kind屬性為“bkOK”,此時按鈕的Caption屬性自動改為了“OK”,而此時BitBtn按鈕已經包含了點擊OK按鈕時關閉窗體的代碼,如下:

0084

5、回到MainForm窗體,雙擊“Show About”按鈕,看看代碼如下:

procedure TMainForm.btnShowForm2Click(Sender: TObject);
begin
  SecondForm.ShowModal; { 顯示出SecondForm模式化窗口}
end;

6、按F9運行程序后,點擊“Show About”按鈕,出現About對話框,注意此對話框為模式對話框,並且不能縮放,如下:

0085

Note

通用對話框(TOpenDialog、TSaveDialog、TFontDialog等等)不代表Delphi窗體建立的對話框,Windows提供這些對話框作為通過對話框集合,所有的Windows應用程序都可以用它,(實際上這些對話框包含在系統的comdlg32.dll文件中),VCL對話框類封裝了此通用對話框,使它們用來起來很方便。

*以上代碼均在Delphi 7中測試通過,示例代碼下載:對話框窗體.rar


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM