C++ Builder 初學問與答 (十二) (轉)
(本系列文章,僅供CSDN使用,另授權CCRUN轉載,其他個人與網站不得轉載、摘抄,如需使用請與作者或CSDN聯絡)
96)問:怎樣編寫開啟、儲存等對話方塊?
答:C++Builder為我們提供了許多常用的對話方塊元件,這些對話方塊元件都放在元件模板的Dialogs選項卡中,例如Font,Color,Open和Print對話方塊。其中OpenDialog對話方塊元件最具有代表性,只要掌握了它的用法,那麼你也就會使用其他的對話方塊元件了。
:namespace prefix = o ns = "urn:schemas--com::office" />
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
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma re "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(T *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 Directory(const AnsiString Caption,const WString ,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問與答到這就結束了,由於原文是在下寫的,帖到這裡時有時會出現一些錯誤,由此給編輯帶來很多不必要的勞動,所以要感謝編輯的辛苦工作!J
注:本文所有例程均在XP系統、BCB6下編譯透過。
(全文未完)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-984510/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C++ Builder 初學問與答 (十一) (轉)C++UI
- C++ Builder 初學問與答(三) (轉)C++UI
- C++ Builder 初學問與答(八) (轉)C++UI
- QTP問與答(轉)QT
- Automation In C++ Builder (轉)C++UI
- Linux問與答(1)(轉)Linux
- C++ Builder 學習1C++UI
- Visual C++與Delphi/C++Builder之比較 (轉)C++UI
- Linux問與答:KDE問題解凝(轉)Linux
- 考研與就業——答學弟學妹問就業
- c++ builder中的ado使用 (轉)C++UI
- 在C++ Builder中定義事件 (轉)C++UI事件
- Borland C++ Builder的API後門 (轉)C++UIAPI
- Borland C++ Builder 5 企業版使用BDE訪問 Oracle方法 (轉)C++UIOracle
- 提問與問答技巧
- C#問答 (轉)C#
- 初學openGL(C++)C++
- 初學 Python(十二)——高階函式Python函式
- 防破解問答集 (轉)
- XHTML基礎問答(轉)HTML
- C++初學解惑(4)——建構函式(上) (轉)C++函式
- 用C++ Builder在桌面上畫圖 (轉)C++UI
- C++ BUILDER 訊息處理的深入探索 (轉)C++UI
- Scrivener for Mac 的問與答Mac
- Excel列印問與答教程Excel
- Linux應用問答(轉)Linux
- 面試問答詳解(一) (轉)面試
- 面試問答詳解(三) (轉)面試
- 面試問答詳解(二) (轉)面試
- 用C++ Builder檢測Windows的啟動模式(轉)C++UIWindows模式
- 用C++ Builder來定製系統選單(轉)C++UI
- C++類初學筆記C++筆記
- python問與答常識Python
- 問答方式學 Node.jsNode.js
- Windows 2000 高階問答 轉 (轉)Windows
- Linux桌面應用問答(轉)Linux
- 50個LINUX問答題(轉)Linux
- JAVA容器-自問自答學HashMapJavaHashMap