程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++ Builder 初學問與答(十二)

C++ Builder 初學問與答(十二)

編輯:C++入門知識
  13.對話框組件  96)問:怎樣編寫文件打開、保存等對話框? <!-- frame contents --> <!-- /frame contents -->   答: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/C++技術專題專題,或   現在,我們輸入文本文件和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);// 調用文本裝入函數從文件中裝入文本,並顯示在編輯框中。  更多內容請看C/C++技術專題專題,或
  
     }  }  //--------------------------------------------------   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”按鈕; 更多內容請看C/C++技術專題專題,或   mbIgnore :對話框含有“Ignore”按鈕;  mbAll :對話框含有“All”按鈕;  mbNoToAll :對話框含有“NoToAll”按鈕;  mbYesToAll :對話框含有“YesToAll”按鈕;  mbHelp :對話框含有“Help”按鈕. <!-- frame contents --> <!-- /frame contents -->   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):這個函數用來顯示一個標准的登錄對話框,用來連接一個數據庫服務器,其參數分別為對話框中數據庫的名字、用戶輸入的用戶名和密碼。 更多內容請看C/C++技術專題專題,或
     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下編譯通過。(本系列還未結束,請繼續關注) 更多內容請看C/C++技術專題專題,或
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved