版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/chinahuyong/article/details/4046162
13.對話框元件
96)問:怎樣編寫檔案打開、儲存等對話框?
答:C++Builder為我們提供了許多常用的對話框元件,這些對話框元件都放在元件模闆的Dialogs頁籤中,例如Font,Color,Open和Print對話框。其中OpenDialog對話框元件最具有代表性,隻要掌握了它的用法,那麼你也就會使用其他的對話框元件了。
97)問:對話框元件的特性有哪些特性呢?
答:對話框元件是一種不可見元件。當你把它放在窗體上時,它是一個大小不變的圖形
按鈕,當程式運作時,對話框元件不會立刻顯示,而必須使用每個對話框都有的Execute方法,使對話框顯示出來。
C++Builder提供的對話框大多數是有模式對話框。這種對話框要求首先必須響應該對話框,然後才能繼續進行工作。所謂響應對話框就是你必須單擊OK或者Cancel按鈕,使對話框傳回一個值。當使用者單擊對話框上的按鈕OK時,傳回True,單擊Cancel按鈕傳回False。使用者可以根據傳回值的不同進行不同的處理。
非模式的對話框使你在響應對話框之前可以完成其他的工作,不必非要首先響應對話框。這類對話框有:FindDialog,ReplaceDialog等。
98)問:能更細點的說明對話框元件的用法嗎?
答:我們就編制一個文本閱讀器來說明如何使用檔案打開對話框。
打開一個新的窗體,我們放上一個按鈕元件和一個Memo元件,将Memo的ScrollBars屬性設定為ssBoth,使得Memo能夠顯示垂直和水準的滾動條。
選中Lines屬性,删除裡面的文本。
在窗體上放置OpenDialog元件。
選中OpenDialog元件,可以看出,OpenDialog有這樣一些主要的特性
FilrerIndex屬性用來指定每次打開對話框所用的預設過濾器。
DefaultExt屬性是一個擴充名,當使用者在檔案編輯框中輸入的檔案名沒有帶擴充名時,對話框會用它作為檔案預設的擴充名。
InitialDir屬性用來設定對話框打開時顯示的目錄。
FileName屬性用來傳回最近一次選中的檔案的完整路徑名。
Filter屬性,這個屬性用來設計在對話框的檔案清單中将列出哪些類型的檔案。
OpenDialog對話框提供了一個專門的編輯器來編輯屬性filter,單擊屬性Filter的value列中的省略好按鈕就可以打開這個編輯器。
左邊用來輸入過濾器的名稱,右邊用來輸入檔案擴充名。
現在,我們輸入文本檔案和C++檔案的過濾器。這樣,在每次打開對話框時候,在檔案類型下拉清單中将顯示過濾器的名稱。
輕按兩下文打開按鈕,輸入這樣一段代碼:
//------------------------------------------
#include <VCl.h>
#pragma hdrstop
#include "Unit1.h"
//------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//-----------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//-------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
if(OpenDialog1->Execute())//首先執行打開檔案對話框函數,這時,打開檔案對話框才顯示出來。如果執行成功,這個函數傳回true,否則傳回false
Memo1->Lines->Clear();//把Memo中的内容清掉
Caption=OpenDialog1->FileName; //獲得使用者選擇的檔案的路徑名,并将它設定成窗體的标題。注意,因為是在Form1視窗(容器)中進行的操作,是以Caption前省了Form1,當然你可以加上Memo1->Lines->LoadFromFile(OpenDialog1->FileName);// 調用文本裝入函數從檔案中裝入文本,并顯示在編輯框中。
99)問:其它對話框的各有什麼重要屬性?
答:儲存對話框SaveDialog與打開對話框非常相似,至于OpenPictureDialog、SavePictureDialog就不用多說了。其它象字型對話框FontDialog的Font屬性;顔色對話框ColorDialog的Color屬性;查找對話框FindDialog的FindText。這裡就不用多說了,看一下就明白了。
100)問:對話框組難道就隻能用上面說的那些元件嗎?要是有,能介紹一下嗎?
答:在C++ Builder內建開發環境的可視化元件中庫中,給應用程式開發員提供了一系列的标準的對話框函數。我們可以直接調用這些函數來顯示一些标準的對話框。
這類函數還真不少,但我們隻要掌握以下五個就足夠了J
extern PACKAGE int _fastcall MessageDlg(const AnsiString Msg,TmsgDlgType DlgType,TmsgDlgButtons Buttons,int HelpCtx):用來在
計算機螢幕中央顯示對話框。
其中,參數Msg是指定要對話框中顯示的字元串。
參數DlgType是TMsgDlgType類的變量,它用來指定對話框的顯示特征。TmsgDlgType是一個集合,它可以取以下的值:
mtWarning:對話框中包含黃色的驚歎符号;
mtError:對話框中包含紅色的驚歎符号;
mtInformation:對話框中包含藍色的“I”符号;
mtConfirmation:對話框中包含綠色的問号;
mtCustom:對話框中不包含位圖符号,标題名稱為應用程式名稱。
參數Buttons是用來指定對話框中包含的按鈕的類型,它是一個集合,可以是以下若幹個元素的組合:
mbYes:對話框含有“Yes”按鈕;
mbNo :對話框含有“No”按鈕;
mbOK:對話框含有“OK”按鈕;
mbCancel :對話框含有“Cancel”按鈕;
mbAbort :對話框含有“Abort”按鈕;
mbRetry :對話框含有“Retry”按鈕;
mbIgnore :對話框含有“Ignore”按鈕;
mbAll :對話框含有“All”按鈕;
mbNoToAll :對話框含有“NoToAll”按鈕;
mbYesToAll :對話框含有“YesToAll”按鈕;
mbHelp :對話框含有“Help”按鈕.
C++ Builder還專門定義了三個常用的按鈕組合:
mbYesNoCancel:包含了mbYes、mbNo和mbCancel元素;
mbOKCancel:包含了mbOK和mbCancel元素;
mbAbortRetryIgnore:包含了mbAbort、mbRetry和mbIgnore元素。
參數HelpCtx用來指定當使用者選擇幫助時,幫助系統中的上下文編号。這個函數根據使用者選擇的按鈕,将傳回相應的值,它有以下傳回值:mrNone、mrAbort、mrOK、mrRetry、mrNo、mrCancel、mrIgnore、mrAll。
extern PACKAGE void _fastcall ShowMessage(const AnsiString Msg):這個函數用來顯示一個對話框,這個對話框中包含一個“OK”按鈕。其中對話框中顯示的内容由參數Msg來确定。
extern PACKAGE AnsiString _fastcall InputBox(const AnsiString Acaption, const AnsiString Aprompt, const AnsiString Adefault):這個函數用來在計算機螢幕上顯示一個對話框,這個對話框有一個文本編輯框,可以用來接收使用者輸入的字元串資訊。
Acaption:用來指定對話框的标題;
Aprompt:用來指定對話框中顯示的内容;
Adefault:用來指定對話框打開時在編輯框中顯示的内容。
extern PACKAGE bool _fastcall LoginDialog(const AnsiString Acaption, AnsiString &AuserName, AnsiString &AuserName):這個函數用來顯示一個标準的登入對話框,用來連接配接一個資料庫
伺服器,其參數分别為對話框中資料庫的名字、使用者輸入的使用者名和密碼。
extern PACKAGE bool _fastcall SelectDirectory(const AnsiString Caption,const WideString Root,AnsiString &Directory)或extern PACKAGE bool _fastcall SelectDirectory(AnsiString &Directory,TselectDirOpts Options,int HelpCtx):這個函數用來顯示一個讓使用者輸入目錄名稱的對話框。其中:
第一種文法的參數Caption用來指定對話框的标題;Root用來指定從哪個根目錄開始浏覽;參數Dircetory用來确定使用者選擇的目錄。這個文法不能改變目前的目錄。
第二種文法的參數Options是一個集合,它可以由以下幾個元素組合而成:
sdAllowCreate:允許使用者輸入一個不存在的目錄名字,但并不建立這個新目錄;
sdPerformCreate:它必須和sdAllowCreate配合使用,當使用者輸入一個不存在的目錄名時,對話框将建立這個目錄;
sdPrompt:它必須和sdAllowCreate配合使用,當使用者輸入一個不存在的目錄名時,将出現消息對話框,詢問使用者是否建立這個新目錄。若使用者選擇是,在包含sdPerformCreate元素時将建立這個新目錄,若沒有包含sdPerformCreate元素,将不建立目錄。
《基礎入門》100問與答到這就結束了,本文所有例程均在XP系統、BCB6下編譯通過。
(本系列還未結束,請繼續關注)