• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 16, 文章 - 1, 評論 - 4, 引用 - 0
            數(shù)據(jù)加載中……

            C++ Builder 初學(xué)問與答 (十一~十五)

            11.工具條組件
              87)問:工具條是Windows編程經(jīng)常要用的, C++Builder能不能實現(xiàn)這個功能呢?

            答:當(dāng)然可以,工具條是由許多具有圖形的按鈕組成的,這些按鈕被分隔符分隔成許多組,每個組都能夠完成特定的工作。工具條上的按鈕具有與位圖按鈕相似的特性——可以擁有多個位圖,當(dāng)按鈕處于不同狀態(tài)時,例如按下、失效等,將顯示不同的位圖。以前C++Builder制作工具條的方法是通過把加速按鈕放在面板組件Panel上實現(xiàn)的。現(xiàn)在,我們不必使用這兩種組件的組合,只要使用ToolBar就可以創(chuàng)建工具條了。工具條是比較難掌握的,它之所以不容易掌握是因為它包含的TToolButton組件有三個屬性:Grouped,AllowAllUp和Down,它們的組合可以產(chǎn)生各種不同效果的按鈕組。這三個屬性我們一定要好好理解。

              88)問:那請給我介紹一下Toolbar這個組件的使用方法好嗎?

              答:好的,我們先從ToolBar的屬性入手,通過對一些重要屬性的分析來了解它。ToolBar包含一些前面沒有見過的屬性:

              ButtonHeight屬性指出了工具條中按鈕的高度。

              ButtonWidth屬性用來設(shè)定工具條中按鈕的寬度。

              Flat屬性為true時,使工具條透明,同時使工具條上按鈕之間的邊界消失。俗稱平面工具條,它的缺省值為False。

              Indent用來在工具條的左邊創(chuàng)建一個邊沿區(qū)。

              ShowCaptins確定是否允許在工具條的按鈕上顯示標(biāo)題。缺省值為False。

              Wrapable設(shè)定是否允許工具條上的按鈕換行。缺省值為True。

              List屬性,當(dāng)這個屬性為True時,工具條上按鈕的圖標(biāo)在左,標(biāo)題在右。為False時,按鈕的圖標(biāo)在上,標(biāo)題在下。缺省值為False。

              Images用來設(shè)定正常情況下,按鈕上顯示的圖標(biāo)列表。

              HotImages用來設(shè)定當(dāng)鼠標(biāo)移動到按鈕上顯示的圖標(biāo)列表。

              DisabledImages用來設(shè)定按鈕失效時顯示的圖標(biāo)列表。

              工具條上所有按鈕顯示的圖標(biāo)就包含在這三個圖標(biāo)列表中。

              在前面介紹的ListView組件中,屬性LargeImages和SmallImages分別表示在兩種不同的狀態(tài)下顯示的圖標(biāo)列表。ToolBar的這三種屬性也有類似的特點,它們分別表示在正常狀態(tài)、鼠標(biāo)指向工具條以及按鈕失效時顯示的圖標(biāo)列表。

              此外,還有幾個運行時態(tài)屬性:

              ButtonCount屬性,指出了工具條中按鈕的個數(shù)。

              Buttons存放著工具條中按鈕的列表。

            RowCount指示著工具條的行數(shù)。

              89)問:C++Builder為什么要采用圖標(biāo)列表的方式來管理工具條上的圖標(biāo)呢?

              答:因為這樣可以集中統(tǒng)一地管理大量的圖標(biāo),從而大大地減輕了程序員的負(fù)擔(dān)。

              答:要為應(yīng)用程序建立工具條,可以按照下面的步驟:

              (1)從選項卡Win32中選擇工具條組件,放置在窗體上。

              注意,剛放置在窗體上的工具條組件一定是在窗體的頂部,因為這時工具條的Align屬性被設(shè)置為alTop。

              (2)在窗體上增加兩個ImageList組件,并為這些組件引入圖標(biāo)。

              (3)將一個ImageList組件賦予工具條的屬性Images,另一個賦予工具條的屬性DisabledImages。

              (4)用鼠標(biāo)右鍵單擊工具條,在彈出菜單中選擇New Button。

              這時將在工具條上出現(xiàn)一個按鈕,這個按鈕無標(biāo)題。這是因為工具條的ShowCaption屬性被設(shè)置成了False。實際上這個按鈕有一個缺省的標(biāo)題ToolButton1。

              這個新創(chuàng)建的按鈕與我們前面介紹的按鈕都不一樣,它是一個TTtoolButton組件。

              (5)選中工具條上的按鈕,把按鈕的ImageIndex屬性改為所需要圖標(biāo)的索引號。這個圖標(biāo)實際上是存放在ImageList組件中的。

              (6)重復(fù)第四步和第五步,在工具條上創(chuàng)建更多的按鈕。這樣一個工具條就建立了。

              90)問:工具條上的按鈕好像與普通按鈕不一樣,請問它有些什么特點呢?

              答:工具條上的按鈕是一個TToolButton組件。它包括一些與工具條有關(guān)的特性,可以簡化工具條上按鈕的配置,并增加一些顯示特性。TToolButton有這樣一些重要屬性。

              AllowAllUp屬性允許一個組中的按鈕同時全部處于未選中狀態(tài)。缺省值是False。

              Down屬性指定按鈕是否被選中。在設(shè)計期間把該屬性設(shè)置為True,可以使按鈕初始化為選中狀態(tài),缺省值為False。

              DropDownMenu屬性把一個彈出菜單與按鈕相連。

              ImageIndex屬性指定出現(xiàn)在按鈕上的圖標(biāo)的索引號。

              Indeterminate屬性確定按鈕是否處于一種既不是選中也不是未選中的中間狀態(tài)。缺省值為False。

              Wrap屬性強(qiáng)迫這個按鈕是這一行的最后一個按鈕,下一個按鈕從下一行開始。缺省值為False。

              Style屬性用來確定按鈕的樣式,它可以有五種不同的取值,這五種取值分別表示五種不同樣式的按鈕。

            tbsButton表示按鈕正常顯示與一般的加速按鈕一樣。

              tbsCheck表示單擊這種類型的按鈕時可以切換Down屬性。一旦你選中了該按鈕,那么按鈕將保持選中狀態(tài)直到再次單擊。

              tbsDropDown表示按鈕顯示成一個向下的箭頭。

              tbsSeparator表示按鈕顯示成工具條上的一個空格。

              tbsDivider表示按鈕顯示成工具條上的一個垂直線段。

              Grouped屬性確定是否允許連續(xù)的多個tbsCheck類型的按鈕組成一組。缺省值是False。如果連續(xù)的多個按鈕,每個按鈕的Grouped屬性都設(shè)置為True,同時Style屬性都設(shè)置為tbsCheck,那么這些組件一次只能選取一個。選中其中一個按鈕將使其他按鈕變成未選中狀態(tài)。

              91)問:如何用加速按鈕創(chuàng)建工具條?

              答:工具條的另一種創(chuàng)建方法是使用面板組件+加速按鈕SpeedButton的方法。加速按鈕在前面曾經(jīng)提到過,它與位圖按鈕很相似,也使用屬性Caption和Glyph放置文本和圖標(biāo),不過加速按鈕還有一些屬性是比較特殊的。

              下面我們先介紹加速按鈕的屬性:

              GroupIndex:通過GroupIndex屬性可以使加速按鈕像單選按鈕那樣使用。也就是說,把多個單選按鈕的GroupIndex屬性賦予相同的值以便組成一組,這樣這個組中的按鈕一次只能有一個按鈕可以被按下,當(dāng)你按下一個按鈕時,其他按鈕就會彈起。需要注意的是GroupIndex必須大于0。如果GroupIndex屬性等于0,那么表示該按鈕是一個普通的加速按鈕。

              Down:屬性值可以控制按鈕是否處于按下狀態(tài),當(dāng)該屬性值為True時,按鈕處于按下狀態(tài)。你可以在設(shè)計時把屬性Down設(shè)置為True,這樣當(dāng)程序運行時,按鈕一開始就處于按下狀態(tài)。

              AllowAllUp:這個屬性用來指定一個組中的所有加速按鈕是否可以同時處于未被按下的狀態(tài)。當(dāng)該屬性為True時,單擊該組中被按下的按鈕,這個按鈕會彈起。當(dāng)該屬性為False時,單擊該組中被按下的按鈕,這個按鈕不會彈起。

              如果你比較一下加速按鈕和TToolButton組件就會發(fā)現(xiàn),它們都有上面介紹的這三種屬性,只不過TToolButton組件中使用屬性Grouped來完成類似于GroupIndex的功能。

              92)問:用加速按鈕設(shè)計工具條與用Toolbar組件相比有什么不同?

              答:用加速按鈕設(shè)計工具條時必須首先在窗體上放置面板組件,而且應(yīng)該把它的Align屬性設(shè)置為alTop(因為工具條一般都放在窗口的頂部)。然后在面板組件上放置加速按鈕。

              一般要利用按鈕的Caption和Glyph屬性為加速按鈕設(shè)置文本和圖標(biāo)。如果這些按鈕只是像普通按鈕那樣操作的話,那么這樣設(shè)置就可以了。但是如果這些按鈕要像單選按鈕那樣使用,那么還必須對GroupIndex屬性進(jìn)行設(shè)置。

            93)問:那如何用加速按鈕來設(shè)計工具條呢?

              答:我們要用到Additional頁的可控組件ControlBar、Speedbutton與Win32頁面中的ToolBar。下面來看一下他的實現(xiàn):

              ①雙擊ControlBar,把她放到窗體中;

              ②雙擊ToolBar,并將其放到ControlBar上;

              ③在ToolBar上添加SpeedButton;

              ④選中一個SpeedButton,在Object Inspector中找到Glyph屬性,來選擇圖片。

              *SpeedButton的Flat屬性改為true,則按鈕為透明的

              *AutoSize改為true,則容器大小隨容件變化

              12.狀態(tài)條組件
              94)問:在Windows編程中,狀態(tài)條可以顯示程序當(dāng)前的一些狀態(tài)信息,是一個很有用的部件,它也被廣泛應(yīng)用在許多程序中,請問,C++Builder是怎樣編寫狀態(tài)條的?

              答:狀態(tài)條StatusBar實際上是由一組狀態(tài)面板組成的,通常顯示在應(yīng)用程序窗口的底部,它的功能主要是顯示一些提示信息和狀態(tài)信息。例如,C++Builder的代碼編輯器底部就顯示了一個狀態(tài)條,而且顯示了多個狀態(tài)面板。

              狀態(tài)條可以只顯示一個狀態(tài)面板,也可以顯示多個狀態(tài)面板。當(dāng)顯示多個狀態(tài)面板時,狀態(tài)條被分割為幾個部分,每個部分都有自己的Text屬性,通過這個屬性就可以在狀態(tài)條顯示信息了。

              如果要在狀態(tài)條上顯示多個狀態(tài)面板,就需要把狀態(tài)條的SimplePanel屬性設(shè)置為False,否則只能顯示一個狀態(tài)面板。

              如果狀態(tài)條只需要顯示一個狀態(tài)面板,那么只要簡單地在窗體上放置狀態(tài)條就可以了。這時窗體上的文本保存在屬性SimpleText中。如果要顯示多個狀態(tài)面板,那么就需要使用面板編輯器創(chuàng)建多個狀態(tài)面板。單擊屬性Panels的Value列中的省略號按鈕(或者雙擊菜單條),就可以打開狀態(tài)面板編輯器。

              單擊編輯器上的按鈕Add可以增加狀態(tài)條上的狀態(tài)面板。單擊面板編輯器中新創(chuàng)建的狀態(tài)面板,在對象編輯器中就會列出該狀態(tài)面板的屬性。

              95)問:可以看出狀態(tài)條上的狀態(tài)面板有五個屬性,他們分別有什么作用呢?

              答:Alignment屬性用來確定面板中所顯示文本的對齊方式。它的可能值為:taLeftJustify表示左對齊、taRightJustify表示右對齊和taCenter表示居中對齊。缺省值為taLeftJustify。

              Bevel用來確定面板的樣式。共有三種方式,None表示面板處于平整的狀態(tài);Lowered表示面板下沉;Raised表示突起。

              Style屬性用來確定在面板中顯示的內(nèi)容是Text文本還是OwnerDraw自繪制圖形方式。如果要在面板中作圖,那么就需要編寫OnDrawPanel事件處理過程。

              Text屬性用來保存面板中顯示的字符串。

              Width用來設(shè)定面板的長寬。

            13.對話框組件

            96)問:怎樣編寫文件打開、保存等對話框?

              答:C++Builder為我們提供了許多常用的對話框組件,這些對話框組件都放在組件模板的Dialogs選項卡中,例如Font,Color,Open和Print對話框。其中OpenDialog對話框組件最具有代表性,只要掌握了它的用法,那么你也就會使用其他的對話框組件了。

              97)問:對話框組件的特性有哪些特性呢?

              答:對話框組件是一種不可見組件。當(dāng)你把它放在窗體上時,它是一個大小不變的圖形按鈕,當(dāng)程序運行時,對話框組件不會立刻顯示,而必須使用每個對話框都有的Execute方法,使對話框顯示出來。

              C++Builder提供的對話框大多數(shù)是有模式對話框。這種對話框要求首先必須響應(yīng)該對話框,然后才能繼續(xù)進(jìn)行工作。所謂響應(yīng)對話框就是你必須單擊OK或者Cancel按鈕,使對話框返回一個值。當(dāng)用戶單擊對話框上的按鈕OK時,返回True,單擊Cancel按鈕返回False。用戶可以根據(jù)返回值的不同進(jìn)行不同的處理。

              非模式的對話框使你在響應(yīng)對話框之前可以完成其他的工作,不必非要首先響應(yīng)對話框。這類對話框有:FindDialog,ReplaceDialog等。

              98)問:能更細(xì)點的說明對話框組件的用法嗎?

              答:我們就編制一個文本閱讀器來說明如何使用文件打開對話框。

              打開一個新的窗體,我們放上一個按鈕組件和一個Memo組件,將Memo的ScrollBars屬性設(shè)置為ssBoth,使得Memo能夠顯示垂直和水平的滾動條。

              選中Lines屬性,刪除里面的文本。

              在窗體上放置OpenDialog組件。

              選中OpenDialog組件,可以看出,OpenDialog有這樣一些主要的特性

              FilrerIndex屬性用來指定每次打開對話框所用的缺省過濾器。

              DefaultExt屬性是一個擴(kuò)展名,當(dāng)用戶在文件編輯框中輸入的文件名沒有帶擴(kuò)展名時,對話框會用它作為文件缺省的擴(kuò)展名。

              InitialDir屬性用來設(shè)置對話框打開時顯示的目錄。

              FileName屬性用來返回最近一次選中的文件的完整路徑名。

              Filter屬性,這個屬性用來設(shè)計在對話框的文件列表中將列出哪些類型的文件。

              OpenDialog對話框提供了一個專門的編輯器來編輯屬性filter,單擊屬性Filter的value列中的省略好按鈕就可以打開這個編輯器。

              左邊用來輸入過濾器的名稱,右邊用來輸入文件擴(kuò)展名。

            現(xiàn)在,我們輸入文本文件和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())//首先執(zhí)行打開文件對話框函數(shù),這時,打開文件對話框才顯示出來。如果執(zhí)行成功,這個函數(shù)返回true,否則返回false

              {

              Memo1->Lines->Clear();//把Memo中的內(nèi)容清掉
              Caption=OpenDialog1->FileName; //獲得用戶選擇的文件的路徑名,并將它設(shè)置成窗體的標(biāo)題。注意,因為是在Form1窗口(容器)中進(jìn)行的操作,所以Caption前省了Form1,當(dāng)然你可以加上Memo1->Lines->LoadFromFile(OpenDialog1->FileName);// 調(diào)用文本裝入函數(shù)從文件中裝入文本,并顯示在編輯框中。

              }

              }

              //--------------------------------------------------

              99)問:其它對話框的各有什么重要屬性?

              答:保存對話框SaveDialog與打開對話框非常相似,至于OpenPictureDialog、SavePictureDialog就不用多說了。其它象字體對話框FontDialog的Font屬性;顏色對話框ColorDialog的Color屬性;查找對話框FindDialog的FindText。這里就不用多說了,看一下就明白了。

              100)問:對話框組難道就只能用上面說的那些組件嗎?要是有,能介紹一下嗎?

              答:在C++ Builder集成開發(fā)環(huán)境的可視化組件中庫中,給應(yīng)用程序開發(fā)員提供了一系列的標(biāo)準(zhǔn)的對話框函數(shù)。我們可以直接調(diào)用這些函數(shù)來顯示一些標(biāo)準(zhǔn)的對話框。

              這類函數(shù)還真不少,但我們只要掌握以下五個就足夠了J

              extern PACKAGE int _fastcall MessageDlg(const AnsiString Msg,TmsgDlgType DlgType,TmsgDlgButtons Buttons,int HelpCtx):用來在計算機(jī)屏幕中央顯示對話框。

              其中,參數(shù)Msg是指定要對話框中顯示的字符串。

              參數(shù)DlgType是TMsgDlgType類的變量,它用來指定對話框的顯示特征。TmsgDlgType是一個集合,它可以取以下的值:

              mtWarning:對話框中包含黃色的驚嘆符號;

              mtError:對話框中包含紅色的驚嘆符號;

              mtInformation:對話框中包含藍(lán)色的“I”符號;

              mtConfirmation:對話框中包含綠色的問號;

              mtCustom:對話框中不包含位圖符號,標(biāo)題名稱為應(yīng)用程序名稱。

              參數(shù)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元素。

              參數(shù)HelpCtx用來指定當(dāng)用戶選擇幫助時,幫助系統(tǒng)中的上下文編號。這個函數(shù)根據(jù)用戶選擇的按鈕,將返回相應(yīng)的值,它有以下返回值:mrNone、mrAbort、mrOK、mrRetry、mrNo、mrCancel、mrIgnore、mrAll。

              extern PACKAGE void _fastcall ShowMessage(const AnsiString Msg):這個函數(shù)用來顯示一個對話框,這個對話框中包含一個“OK”按鈕。其中對話框中顯示的內(nèi)容由參數(shù)Msg來確定。

              extern PACKAGE AnsiString _fastcall InputBox(const AnsiString Acaption, const AnsiString Aprompt, const AnsiString Adefault):這個函數(shù)用來在計算機(jī)屏幕上顯示一個對話框,這個對話框有一個文本編輯框,可以用來接收用戶輸入的字符串信息。

              Acaption:用來指定對話框的標(biāo)題;

              Aprompt:用來指定對話框中顯示的內(nèi)容;

              Adefault:用來指定對話框打開時在編輯框中顯示的內(nèi)容。

              extern PACKAGE bool _fastcall LoginDialog(const AnsiString Acaption, AnsiString &AuserName, AnsiString &AuserName):這個函數(shù)用來顯示一個標(biāo)準(zhǔn)的登錄對話框,用來連接一個數(shù)據(jù)庫服務(wù)器,其參數(shù)分別為對話框中數(shù)據(jù)庫的名字、用戶輸入的用戶名和密碼

            extern PACKAGE bool _fastcall SelectDirectory(const AnsiString Caption,const WideString Root,AnsiString &Directory)或extern PACKAGE bool _fastcall SelectDirectory(AnsiString &Directory,TselectDirOpts Options,int HelpCtx):這個函數(shù)用來顯示一個讓用戶輸入目錄名稱的對話框。其中:

              第一種語法的參數(shù)Caption用來指定對話框的標(biāo)題;Root用來指定從哪個根目錄開始瀏覽;參數(shù)Dircetory用來確定用戶選擇的目錄。這個語法不能改變當(dāng)前的目錄。

              第二種語法的參數(shù)Options是一個集合,它可以由以下幾個元素組合而成:

              sdAllowCreate:允許用戶輸入一個不存在的目錄名字,但并不創(chuàng)建這個新目錄;

              sdPerformCreate:它必須和sdAllowCreate配合使用,當(dāng)用戶輸入一個不存在的目錄名時,對話框?qū)?chuàng)建這個目錄;

              sdPrompt:它必須和sdAllowCreate配合使用,當(dāng)用戶輸入一個不存在的目錄名時,將出現(xiàn)消息對話框,詢問用戶是否創(chuàng)建這個新目錄。若用戶選擇是,在包含sdPerformCreate元素時將創(chuàng)建這個新目錄,若沒有包含sdPerformCreate元素,將不創(chuàng)建目錄。

              《基礎(chǔ)入門》100問與答到這就結(jié)束了,本文所有例程均在XP系統(tǒng)、BCB6下編譯通過。

            第二部分:快速提高

              好久以來有不少朋友問我,《C++ Builder問與答》為什么不繼續(xù)寫了?我也一直在思考還應(yīng)該寫下去不?CBX的推出,加之寶蘭宣布不在出新的CB版本,讓我們這些一直喜愛CB的人不清楚下一個方向到底在何處?當(dāng)然真的希望CB會繼續(xù),而不要倒下,但對于我們來說這只能是一種期盼L
              CB的優(yōu)點我不想多說了,否則就不會有這么多的喜歡者,而一些入門的朋友還是選擇CB做為進(jìn)入C/C++的工具,這使我覺得這篇文章還是值得寫下去的,因為還是有那么的朋友在期待著的她的下一篇。這里對這些朋友表示感謝!

            不在多說了,讓我開始新的篇章吧,在這里你將進(jìn)一步了解CB的特色,更希望我們CB的陣營越來越強(qiáng)大,更希望我們都成為真正意義上的好朋友,互勉互進(jìn)J

              由于時間有限,加之作者水平有限,文中難免有些錯誤,還及時請指出J這里先表示感謝!

              15.菜單

              1)問:C++Builder的菜單項有很多,它們各有什么作用呢?

              答:好吧,讓我們在新的篇章中首先來了解這方面的知識。下圖就是C++Builder集成開發(fā)環(huán)境中的菜單項名稱。

              (1)首先是File菜單。通過File菜單,我們可以打開、保存、關(guān)閉以及打印新的或已經(jīng)存在的工程和文件。在這個菜單中,包含了這樣一些菜單項:

              “New”菜單項打開一個新的項目對話框,這個對話框包含了儲藏在對象儲藏里的模板。在此我們可以復(fù)制模板對象、從模板繼承得到一個新的對象,或者是修改模板對象。

              “New Application”菜單項將根據(jù)對象儲藏里設(shè)定的缺省工程模板生成一個新的工程,缺省情況下為包含有一個空窗體的新工程。

              “New Form”菜單項創(chuàng)建并加入一個新的窗體到工程中,這個窗體根據(jù)對象儲藏里的缺省Form模板建立。

              “Open”用來載入一個已經(jīng)存在的工程、窗體、單元或者是文本文件到代碼編輯器。

              “Open Project”菜單項用來載入一個已經(jīng)存在的工程。

              “Reopen”菜單項用于列出最近關(guān)閉的工程和模塊,供用戶選擇、打開。  

              “Save”菜單項用于使用當(dāng)前的文件名保存當(dāng)前的文件。

              “Save As”菜單項用于當(dāng)前文件的換名保存。

              “Save Project As”菜單項用于將當(dāng)前工程文件換名保存。

              “Save All”菜單項用于保存所有打開的文件,這些文件包括工程文件和模塊文件等。

              “Close”菜單項用于關(guān)閉工程里的窗口、單元或關(guān)閉當(dāng)前工程等。

              “Close All”菜單項用于關(guān)閉所有打開的文件。

              “Include Unit Hdr”菜單項將一個選定的包含文件用#include語句加入到活動的模塊中。從而建立模塊間的程序聯(lián)系。這一項還是很有用處的。

              “Print”菜單項用于將當(dāng)前活動的文件送到打印機(jī)。

              “Exit”菜單項用于關(guān)閉打開的工程,并退出C++Builder集成開發(fā)環(huán)境。

              (2)Edit菜單用于管理設(shè)計時的文本和組件。

              其中菜單項“Undo/Undelete”用于撤消最后一個動作。

              “Redo”用于恢復(fù)被Undo撤消的動作。

              “Cut”用于將選定的項目刪除,并且將這個項目放到剪切板上。

              “Copy” 用于將選定項目的拷貝到剪切板上。

              “Paste”用于將剪切板上的內(nèi)容插入到代碼編輯器窗口或者窗口里。

              “Delete”用于將選定的內(nèi)容刪除。

              “Select All”菜單項用于選定窗口中所有的組件。

              “Align to Grid”菜單項將選定的組件按最*近網(wǎng)格點對齊的原則進(jìn)行排列。

              “Bring to Front”菜單項用于移動選定的組件到最前面層,這樣,當(dāng)他和其他組件重疊時,就不可能被其他組件擋住。

              “Send to Back”菜單項用于移動選定的組件到最后面一層。

              “Align”用于排列組件。

              “Size”菜單項用于設(shè)置組件的大小。

              “Scale”菜單項用于按比例縮放窗體上組件的大小。

              “Tab Order”菜單項用于修改當(dāng)前活動窗口在運行時,按Tab鍵后,焦點在所有組件中切換的順序。

              “Creation Order”菜單項用于修改窗口中不可視組件用Tab鍵切換焦點的順序。

              “Lock Controls”菜單項用于將窗口中所有的組件固定在當(dāng)前的位置。這可以防止你誤修改。

              (3)Search菜單命令用于定位文本、錯誤、單元、變量以及代碼編輯器中的符號等。

              “Find”菜單項用于在當(dāng)前文件中查找指定的文本。

              “Find In Files”菜單項用于在多個文件中查找指定的文本,并將文本找到的信息顯示在代碼編輯器底部的信息窗口。

              “Replace”菜單項用于查找指定的文本,并將這個指定的文本用指定的新的文本來代替。

              “Search Again”菜單項用于重復(fù)查找。

              “Incremental Search”菜單項用于按照我們鍵入過程中輸入的不完整的字符串查找。這樣,不需輸入全部文本就可以找到需要的文本。

              “Go to Line Number”菜單項用于將光標(biāo)移動到指定的行。

              “Go to Address”菜單項用于跳到指定的地址。

            4)利用C++Builder集成開發(fā)環(huán)境中的視圖“View”菜單,可以顯示或隱藏C++Builder集成開發(fā)環(huán)境中的不同的部分,也可以用于打開屬于集成調(diào)試器的窗口。

            “Project Manager”菜單項用于顯示工程管理器。

              “Object Inspector”菜單項用于顯示對象監(jiān)視器窗口。

              “Alignment Palette”菜單項用于顯示排版窗口。

              “Component List”菜單可以彈出一個包含所有組件列表的窗口,在這個窗口中可以很方便的根據(jù)組件名字找到組件,并放置到窗體上。

              “Window List”菜單彈出一個包含所有打開窗口的對話框,從這個對話框可以方便的激活任意C++Builder的窗口。

              “Debug Windows”菜單包含一些有關(guān)調(diào)試的子菜單。他有以下幾個子菜單項:

              ①“Breakpoints”菜單項用于列表顯示斷點對話框。

              ②“Call Stack”菜單項用于顯示調(diào)用堆棧對話框。

              ③“Watches”菜單項用于顯示觀察列表對話框。

              ④“Local Variables”菜單項用來監(jiān)視局部變量。

              ⑤“Threads”菜單項用于顯示線程狀態(tài)框。

            ⑥“Modules”菜單項用于顯示模塊窗口。

              ⑦“Event log”用于顯示事件的記錄。

              ⑧“CPU”用于顯示CPU窗口。

              “Toggle Form/Unit”菜單項用于在窗體和單元之間來回切換活動狀態(tài)。

              “Units”菜單項用于顯示查看單元對話框。

              “Forms”菜單項用于顯示查看窗體對話框。

              “Type Library”菜單項用于顯示類型庫編輯器窗口。

              “New Edit Window”菜單項用于在代碼編輯器中打開一個新的頁。

              “Toolbar”菜單項用于顯示/隱藏工具欄。

              (5)在C++Builder集成開發(fā)環(huán)境中,利用工程(Project)菜單可以編譯、建立應(yīng)用程序,當(dāng)然,這些工作的進(jìn)行必須首先要打開一個工程文件。


              “Add to Project”菜單項用于向工程文件中加入一個文件。

              “Remove from Project”菜單項用于從工程文件中刪除一個文件。

              “Import Type Library”菜單項用于向工程中引入一個類型庫。

              “Add To Repository”菜單項用于將一個工程加入到對象儲藏中。

            “View Source”菜單項用于在代碼編輯器中打開工程源文件。

              “View Makefile”菜單項用于在代碼編輯器中打開擴(kuò)展名為.BPR的工程Make文件。

              “Add New Project”菜單項用于打開新項目(New Items)對話框,這個對話框中包含有新對象和儲藏在對象儲藏中的對象。

              “Add Existing Project”菜單項用于添加一個已經(jīng)存在的工程。

              “Compile Unit”菜單項用于編譯上次編譯后任何經(jīng)過修改了的源代碼程序。

              “Make project”菜單項對當(dāng)前工程中從上一次編譯后又已經(jīng)修改的文件進(jìn)行編譯,并生成最終的應(yīng)用程序。

              “Build project”菜單項重新編譯工程中所有的文件,而不管文件是否修改。

              “Information for project”菜單項顯示工程所有有關(guān)構(gòu)造工程的信息和狀態(tài)。

              “Make All Projects”菜單項構(gòu)造工程組中所有已經(jīng)改變的工程。

              “Build All Projects”菜單項重新創(chuàng)建工程組中所有的工程,而不管工程是否改變。

              “Web Deployment Options”菜單項對完成配置的ActiveX控制或活動窗體到網(wǎng)絡(luò)服務(wù)器進(jìn)行設(shè)置。

              “Web Deploy”菜單項用于在設(shè)置了網(wǎng)絡(luò)配置選項,并編譯了工程以后,配置最終的ActiveX控制或活動窗體。

              “Options”菜單項用于修改工程的連接、編譯版本等配置。

              (6)C++Builder集成開發(fā)環(huán)境中的Run菜單包含了C++Builder集成調(diào)試的一些菜單命令。這些菜單命令形成了集成調(diào)試器的核心功能。


              “Run”菜單項用于編譯并運行應(yīng)用程序。

            Attatch to Process”菜單項用來調(diào)試一個當(dāng)前正在運行的進(jìn)程。

              “Parameters”菜單項用于指定應(yīng)用程序運行時的初始參數(shù)。

              “Register ActiveX Server”菜單項用于將ActiveX控制加入到窗口登記表中。

              “Unregister ActiveX Server”菜單項用于將ActiveX控制從窗口登記表中刪除。

              “Install COM+ Objects”菜單項用來安裝微軟的COM+對象。

              “Step Over”菜單項用于一次執(zhí)行應(yīng)用程序中的一行,而忽略程序行中的函數(shù)調(diào)用等。

              “Trace Into”菜單項用于一次執(zhí)行應(yīng)用程序中的一行,但是,遇到程序行中的函數(shù)調(diào)用時,程序的運行則轉(zhuǎn)移到函數(shù)的內(nèi)部運行,這樣,便于程序調(diào)試人員跟蹤程序的運行。

              “Trace To Next Source Line”菜單項執(zhí)行應(yīng)用程序,在下一個可執(zhí)行的程序代碼中停止運行。

              “Run To Cursor”菜單項運行載入的程序,在程序運行到代碼編輯器窗口中的光標(biāo)所在位置時停下來。

              “Show Execution Point”菜單項將光標(biāo)放在一個編輯窗口的可執(zhí)行點上。

              “Program Pause”菜單項用于暫時停止一個正在運行的應(yīng)用程序。

              “Program Reset”菜單項用于結(jié)束當(dāng)前運行的程序,并將應(yīng)用程序從內(nèi)存中釋放,重新載入這個應(yīng)用程序,然后將光標(biāo)放在程序運行的起始點上。

              “Inspect”菜單項打開監(jiān)視對話框,在這個監(jiān)視對話框中,調(diào)試人員可以監(jiān)視、檢查、核對變量和表達(dá)式的值。

              “Evaluate/Modify”菜單項打開評估/修改(Evaluate/Modify)對話框,在這個對話框中,可以評估,也可以修改表達(dá)式的值。

              “Add Watch”菜單項用于打開觀察屬性對話框,在這個觀察對話框中,調(diào)試人員可以加入、刪除觀察項。

              “Add Breakpoint”菜單項用于設(shè)置斷點,通過它下面的菜單項,我們可以用很多種方式設(shè)置斷點。

            (7)在C++Builder集成開發(fā)環(huán)境中,還有Component菜單。在組件菜單下的菜單命令是有關(guān)建立、安裝、重建組件的菜單項。其中:

            New Component”菜單項打開組件向?qū)Ы⑿陆M件。

              “Install Component”菜單項安裝新的組件。

              “Import ActiveX Control”菜單項將ActiveX控制的類型庫加入到C++Builder的工程中。

              “Create Component Template”菜單項定制一個組件,并用新的名字、組件板頁和圖標(biāo)保存這個組件作為組件模板。

              “Install Packages”菜單項指定工程所需要的程序包。

              “Configure Palette”菜單項用于打開組件板對話框。

              (8)在開發(fā)數(shù)據(jù)庫方面的應(yīng)用程序的時候,C++Builder集成開發(fā)環(huán)境中的Database菜單就會發(fā)揮作用,在數(shù)據(jù)庫菜單下包含的菜單項允許程序人員創(chuàng)建、修改、跟蹤、查看數(shù)據(jù)庫。


              “Explore”菜單項打開結(jié)構(gòu)查詢語言/數(shù)據(jù)庫瀏覽器,打開的瀏覽器保持著應(yīng)用程序與遠(yuǎn)程數(shù)據(jù)庫服務(wù)之間的連接,同時,也允許程序人員創(chuàng)建、編輯BDE別名和元數(shù)據(jù)對象。

              “SQL Monitor”菜單項打開SQL監(jiān)視器,在這個監(jiān)視器中,我們可以看到實際的、通過SQL連接到遠(yuǎn)程數(shù)據(jù)服務(wù)器或者是通過ODBC連接到ODBC數(shù)據(jù)源的調(diào)用語句。

              “Form Wizard”菜單項使用數(shù)據(jù)庫窗體向?qū)?chuàng)建一個包含有顯示從一個局部或者遠(yuǎn)程數(shù)據(jù)庫獲取數(shù)據(jù)的窗體。

              (9)工具(Tools)菜單在C++ Builder集成開發(fā)環(huán)境中也占據(jù)著重要的地位。通過工具菜單,我們可以查看、修改集成環(huán)境的設(shè)置,可以修改工具菜單中的程序列表,也可以創(chuàng)建、編輯映像。



              “Environment Options”菜單項用于定制編輯器、瀏覽器,配置環(huán)境的優(yōu)先性,以及定制組件板的外形等。

              “Debugger Options”菜單項用來對調(diào)試環(huán)境進(jìn)行設(shè)置。

              “Repository”菜單項用于維護(hù)對象儲藏對話框。

              “Import RC Scripts”菜單項將資源文件轉(zhuǎn)換成C++ Builder的形式,并將轉(zhuǎn)化后的資源加入到C++ Builder當(dāng)前工程中。

              “Configure Tools”菜單項顯示工具選項對話框,通過這個對話框,我們可以加入、刪除、編輯工具菜單,從而將常用工具集成到這個菜單中。

              “DataBase Desktop”菜單項顯示數(shù)據(jù)庫平臺(database desktop),在數(shù)據(jù)庫平臺上,可以創(chuàng)建和重構(gòu)數(shù)據(jù)庫表,或者瀏覽、編輯表中的數(shù)據(jù)等等。

              “Visual C++ Project Conversition Utility”菜單項用來將Visual C++的工程轉(zhuǎn)換成C++Builder的工程文件。

              “Image Editor”菜單項啟動映像編輯器(Image editor),在這個映像編輯器中,我們可以創(chuàng)建、編輯資源文件、圖標(biāo)、位圖以及光標(biāo)文件。

            (10)Window菜單項是C++ Builder6新提供的一個菜單單元。



              “Form1”在多窗口時切換到第一個窗口。

              “Object Inspector”切換到對象檢查器,方便查看與何改屬性及事件。

              “Object TreeView”使當(dāng)前的對象樹狀窗口成為焦點。

              “Unit1.cpp,Editor”切換到代碼編輯器中,進(jìn)行代碼查看與修改。

              “Next Window”多窗口時顯示下一個窗口。窗口通常按創(chuàng)建順序。

              (11)在C++Builder集成開發(fā)環(huán)境中,最后一個菜單為Help。利用這個幫助菜單,我們可以獲得在線幫助。


              “Contents”菜單項顯示所有C++Builder幫助文件總內(nèi)容的列表。

              “Index”菜單項顯示使用幫助索引。

              “Inprise Home Page”菜單項用于跳轉(zhuǎn)到Inprise公司的主頁。

              “C++Builder Home Page”菜單項用于跳轉(zhuǎn)到Inprise公司的C++Builder主頁。

              “Inprise Programs and Services”菜單項用于跳轉(zhuǎn)到Inprise公司的產(chǎn)品和服務(wù)主頁中。

              “C++Builder Direct”用于通過瀏覽器引導(dǎo)用戶訪問C++Builder相關(guān)網(wǎng)站。

              “customize”菜單項用于自定義包含在主幫助內(nèi)容和索引中的幫助文件。

              “About”菜單項用于顯示C++Builder的版權(quán)和版本號。

             

            16.C/C++語言在CB中的一些特定用法

            2)AnsiString是從Delphi中引進(jìn)來的嗎?

              答:CB的核心組件VCL是用Object Pascal語言寫出的,所以CB的VCL組件的屬性有很多都是使用long string,例如:Text、 Name、Caption等屬性都是使用Object Pascal的long string。基于此關(guān)系,CB只好建立了和Object Pascal的long string相應(yīng)的類別,我們將它稱為AnsiString。

              3)AnsiString與String有什么區(qū)別?

              答: C++ Builder在Sysdefs.h頭文件中有這樣的定義:

              typedef  AnsiString String;

              從這一點在看他二者是完全一樣的,只是書寫起來后者更方便一些,前者是意圖更明了一些。

              4)能介紹一下AnsiString類的一些常見函數(shù)及其用法嗎?

              答:當(dāng)然可以了,下面就常見函數(shù)做一下簡單介紹:

              

            成員函數(shù)

            語法

            功能

            c_str

            char *_fastcall c_str() const

            返回字符串?dāng)?shù)據(jù)的指針

            Delete

            void _fastcall Delete(int index,int count)

            由index處開始刪除count個字符

            Insert

            void _fastcall Insert(const AnsiString& str,int index)

            由index處開始插入字符str到原字符串中

            IsEmpty

            bool _fastcall IsEmpty() const

            返回字符串是否為空,true表示空字符串

            Length

            int _fastcall Length() const

            返回字符串長度

            LowerCase

            AnsiString _fastcall LowerCase() const

            將字符串中的大寫字母改寫成小寫

            UpperCase

            AnsiString _fastcall UpperCase() const

            將字符串中的小寫字母改寫成大寫

            Pos

            int _fastcall Pos(cont AnsiString& substr)const;

            找出子字符串在原字符串中由第幾個位置開始

            SubString

            AnsiString _fastcall SubString(int index,int count)const

            返回由index處向后取count個字符

            ToDouble

            double _fastcall ToDouble() const

            將字符轉(zhuǎn)成雙精度數(shù)值

            ToInt

            int _fastcall ToInt() const

            將字符轉(zhuǎn)成整形

            IntToStr

            AnsiString _fastcall IntToStr(int Value)

            將整形轉(zhuǎn)成字符串

            Trim

            AnstString _fastcall Trim() const

            返回一個新的字符串,它會將原字符串前后空白或控制字符清除后再返回

            WideChar

            wchar_t fastcall WideChar(wchart* dest,int destsize)const

            轉(zhuǎn)換AnsiString到一個寬字符數(shù)組(COM中常用)

            5)AnstString成員函數(shù)與傳統(tǒng)字符串函數(shù)有何不同之處?

              答:我們可以通過二者的一個對照表來查看他們的之間的不同之處:
              

            AnsiString成員函數(shù)

            功能

            傳統(tǒng)字符串函數(shù)

            =

            字符串拷貝

            strcpy

            +=

            字符串合并

            strcat

            +

            字符串連接

            ==,!+=,<,<=,>,>=

            字符串比較

            strcmp

            c_str()

            相互轉(zhuǎn)換

            無,但可以利用指針實現(xiàn)

            Delete

            刪除子字符串

            Insert

            插入子字符串

            Length

            求字符串長度

            strlen

            LowerCase

            字母轉(zhuǎn)成小寫

            strlwr

            Pos

            找出子字符串

            strstr

            SetLength

            設(shè)置字符串長度

            ToInt

            轉(zhuǎn)成整形

            ToDouble

            轉(zhuǎn)成雙精度

            sprintf

            UpperCase

            字母轉(zhuǎn)成大寫

            strupr


              6)如何實現(xiàn)傳統(tǒng)字符串與AnsiString字符串的相互轉(zhuǎn)換?

              答:傳統(tǒng)的C語言是使用字符來組成字符串的(字符串末尾必須有’\0’做為結(jié)束標(biāo)志),其格式和AnsiString并不相同。由于在CB中我大量使用AnsiString格式,所以有時也難免要進(jìn)行一些轉(zhuǎn)換,我們可以通過下列三種方法來實現(xiàn):

              方法1:AnsiString字符串轉(zhuǎn)換成字符串?dāng)?shù)組:

              先利用AnsiString類別中的c_str()方法轉(zhuǎn)換成傳統(tǒng)字符串?dāng)?shù)組,再用strcpy拷貝,將它拷貝到字符數(shù)組中去:

              char s1[20];

              strcpy(s1,Edit1->Text.c_str());

              方法2:AnsiString轉(zhuǎn)換成傳統(tǒng)字符串可以利用字符指針來實現(xiàn):

              可以通過字符指針來實現(xiàn):

              char *s;

              s=Edit->Text.c_str();

              方法3:利用字符指針實現(xiàn)傳統(tǒng)字符串轉(zhuǎn)換成AnsiString:

              char *s=”試一試,看看能不能成功!”;

              Edit->Text=s;

            7)Set類如何用?

              答:嚴(yán)格來說,CB的集合(Set)并不是一個類,而是一個類模板(Class Template)。它用來實現(xiàn)集合這個抽象數(shù)據(jù)類型。

              使用它可以定義一個實際的集合類型,它的一般聲明模式是這樣的:

              typedef Set<type,minval,maxval>ClassName;

              其中type用來指定集合元素的類型;minval指定集合元素的最小值;maxval指定集合元素的最大值。

              舉個例子來說,若是我們定義一個以TupperSet為名的集合類,這個集合類的可能元素為26個大寫字母,我們可以這樣定義:

              typedef Set<char,’A’,’Z’>TupperSet;


              應(yīng)用時我們可以使用這個集合類聲明一個具體的集合對象,如:

              TupperSet UpperSet;


              8)能不能告訴我一下Set類有哪些常見的使用方法或操作符?

              答:當(dāng)然可以了,以下是它的一些常見操作符和方法:

              Clear方法:清除集合對象內(nèi)的所有元素,使集合成為空集;

              Contains方法:查詢集合中是否包含指定的元素,其聲明為:

              bool _fastcall Contains(const T el)const;
              operator-:兩個集合進(jìn)行求差運算,結(jié)果集合包含兩個集合中不相同的元素;
              operator*:求兩個集合的交集;
              operator+:求兩個集合的并集;
              operator<<:添加一個元素到指定集合;
              operator>>:從集合中刪除一個指定元素。
              其實Set類的應(yīng)該比較廣泛,比如判斷我們是否按下鼠標(biāo)左鍵,可以用如下的語句:
              if(Shift.Contains(ssLeft))。

              
              9)聽說在CB中有一個可以定時觸發(fā)的組件,能否介紹一下它的屬性和事件嗎?

              答:你說的是Timer組件,它位于組件欄的System組件頁中。使用它并不難,因為他的屬性、事件特別少:

              Enabled屬性:布爾類型。缺省時為true,這時定時器將經(jīng)過一段時間就觸發(fā)OnTimer事件。在這個屬性從false變?yōu)閠rue時,時鐘將重新開始計時。

              Interval屬性:這個屬性用來設(shè)置每隔多長時間就觸發(fā)一次OnTimer事件,以毫秒為單位。缺省為1000毫秒。

              OnTimer事件:這個事件在Enabled屬性設(shè)置為true時,每隔Interval屬性指定的時間觸發(fā)一次。
              
              10)原來Timer組件如此簡單,但我還有些不懂為什么說它是一個可找替循環(huán)語句,能否舉一個例子說明下OnTimer事件?

              答:它不能取替循環(huán)語句的,當(dāng)然在特定條件下,他比循環(huán)語句更有效,尤其是在涉及到按時循環(huán)時。在我編寫的春輝網(wǎng)絡(luò)電視里有一段OnTimer事件代碼,可供大家參考:

              void __fastcall TForm1::Timer1Timer(TObject *Sender)
              {
              String s1="春輝(CH)軟件   作者:董維春  王巖   CH工作室";
              if(i<=54)
              {
              Label1->Caption=s1.SubString(i,18);
              i+=2;
              }
              else
              {
              i=1;
              }
              }
              (未完待續(xù))

            posted on 2007-06-29 11:22 東東會會 閱讀(3393) 評論(0)  編輯 收藏 引用 所屬分類: C++Builder 基礎(chǔ)

            久久久中文字幕日本| 18岁日韩内射颜射午夜久久成人| 国产精品美女久久久久久2018| 中文字幕精品久久| 亚洲国产一成人久久精品| 久久精品人成免费| 精品国产91久久久久久久| 久久久国产精品网站| 久久伊人影视| 久久夜色精品国产亚洲| 久久久久一级精品亚洲国产成人综合AV区| 欧美亚洲另类久久综合| 四虎久久影院| 久久久不卡国产精品一区二区| 久久久久人妻一区精品| 久久久精品人妻一区二区三区蜜桃 | 久久久久99精品成人片牛牛影视| 四虎亚洲国产成人久久精品| 97久久精品无码一区二区| 久久精品极品盛宴观看| 国产精品久久一区二区三区| 日本WV一本一道久久香蕉| 青青青青久久精品国产h久久精品五福影院1421| 深夜久久AAAAA级毛片免费看| 99久久精品国产综合一区| 一本大道加勒比久久综合| 美女写真久久影院| 岛国搬运www久久| 中文字幕精品久久久久人妻| 一本综合久久国产二区| 久久精品国产第一区二区三区| 亚洲国产精品久久电影欧美| 国产精品视频久久久| 人人狠狠综合久久亚洲| 久久99国产综合精品免费| 99久久婷婷国产综合精品草原| 国产亚洲精久久久久久无码AV| 国产精品成人99久久久久91gav| 18禁黄久久久AAA片| 国产香蕉久久精品综合网| 国产精品福利一区二区久久|