C++ Builder初學問與答12

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還專門定義了三個常用的按鈕組合: 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章