11.工具條組件
87)問:工具條是Windows編程經(jīng)常要用的, C++Builder能不能實(shí)現(xiàn)這個功能呢?
答:當(dāng)然可以,工具條是由許多具有圖形的按鈕組成的,這些按鈕被分隔符分隔成許多組,每個組都能夠完成特定的工作。工具條上的按鈕具有與位圖按鈕相似的特性——可以擁有多個位圖,當(dāng)按鈕處于不同狀態(tài)時(shí),例如按下、失效等,將顯示不同的位圖。以前C++Builder制作工具條的方法是通過把加速按鈕放在面板組件Panel上實(shí)現(xiàn)的。現(xiàn)在,我們不必使用這兩種組件的組合,只要使用ToolBar就可以創(chuàng)建工具條了。工具條是比較難掌握的,它之所以不容易掌握是因?yàn)樗腡ToolButton組件有三個屬性:Grouped,AllowAllUp和Down,它們的組合可以產(chǎn)生各種不同效果的按鈕組。這三個屬性我們一定要好好理解。
88)問:那請給我介紹一下Toolbar這個組件的使用方法好嗎?
答:好的,我們先從ToolBar的屬性入手,通過對一些重要屬性的分析來了解它。ToolBar包含一些前面沒有見過的屬性:
ButtonHeight屬性指出了工具條中按鈕的高度。
ButtonWidth屬性用來設(shè)定工具條中按鈕的寬度。
Flat屬性為true時(shí),使工具條透明,同時(shí)使工具條上按鈕之間的邊界消失。俗稱平面工具條,它的缺省值為False。
Indent用來在工具條的左邊創(chuàng)建一個邊沿區(qū)。
ShowCaptins確定是否允許在工具條的按鈕上顯示標(biāo)題。缺省值為False。
Wrapable設(shè)定是否允許工具條上的按鈕換行。缺省值為True。
List屬性,當(dāng)這個屬性為True時(shí),工具條上按鈕的圖標(biāo)在左,標(biāo)題在右。為False時(shí),按鈕的圖標(biāo)在上,標(biāo)題在下。缺省值為False。
Images用來設(shè)定正常情況下,按鈕上顯示的圖標(biāo)列表。
HotImages用來設(shè)定當(dāng)鼠標(biāo)移動到按鈕上顯示的圖標(biāo)列表。
DisabledImages用來設(shè)定按鈕失效時(shí)顯示的圖標(biāo)列表。
工具條上所有按鈕顯示的圖標(biāo)就包含在這三個圖標(biāo)列表中。
在前面介紹的ListView組件中,屬性LargeImages和SmallImages分別表示在兩種不同的狀態(tài)下顯示的圖標(biāo)列表。ToolBar的這三種屬性也有類似的特點(diǎn),它們分別表示在正常狀態(tài)、鼠標(biāo)指向工具條以及按鈕失效時(shí)顯示的圖標(biāo)列表。
此外,還有幾個運(yùn)行時(shí)態(tài)屬性:
ButtonCount屬性,指出了工具條中按鈕的個數(shù)。
Buttons存放著工具條中按鈕的列表。
RowCount指示著工具條的行數(shù)。
89)問:C++Builder為什么要采用圖標(biāo)列表的方式來管理工具條上的圖標(biāo)呢?
答:因?yàn)檫@樣可以集中統(tǒng)一地管理大量的圖標(biāo),從而大大地減輕了程序員的負(fù)擔(dān)。
答:要為應(yīng)用程序建立工具條,可以按照下面的步驟:
(1)從選項(xiàng)卡Win32中選擇工具條組件,放置在窗體上。
注意,剛放置在窗體上的工具條組件一定是在窗體的頂部,因?yàn)檫@時(shí)工具條的Align屬性被設(shè)置為alTop。
(2)在窗體上增加兩個ImageList組件,并為這些組件引入圖標(biāo)。
(3)將一個ImageList組件賦予工具條的屬性Images,另一個賦予工具條的屬性DisabledImages。
(4)用鼠標(biāo)右鍵單擊工具條,在彈出菜單中選擇New Button。
這時(shí)將在工具條上出現(xiàn)一個按鈕,這個按鈕無標(biāo)題。這是因?yàn)楣ぞ邨l的ShowCaption屬性被設(shè)置成了False。實(shí)際上這個按鈕有一個缺省的標(biāo)題ToolButton1。
這個新創(chuàng)建的按鈕與我們前面介紹的按鈕都不一樣,它是一個TTtoolButton組件。
(5)選中工具條上的按鈕,把按鈕的ImageIndex屬性改為所需要圖標(biāo)的索引號。這個圖標(biāo)實(shí)際上是存放在ImageList組件中的。
(6)重復(fù)第四步和第五步,在工具條上創(chuàng)建更多的按鈕。這樣一個工具條就建立了。
90)問:工具條上的按鈕好像與普通按鈕不一樣,請問它有些什么特點(diǎn)呢?
答:工具條上的按鈕是一個TToolButton組件。它包括一些與工具條有關(guān)的特性,可以簡化工具條上按鈕的配置,并增加一些顯示特性。TToolButton有這樣一些重要屬性。
AllowAllUp屬性允許一個組中的按鈕同時(shí)全部處于未選中狀態(tài)。缺省值是False。
Down屬性指定按鈕是否被選中。在設(shè)計(jì)期間把該屬性設(shè)置為True,可以使按鈕初始化為選中狀態(tài),缺省值為False。
DropDownMenu屬性把一個彈出菜單與按鈕相連。
ImageIndex屬性指定出現(xiàn)在按鈕上的圖標(biāo)的索引號。
Indeterminate屬性確定按鈕是否處于一種既不是選中也不是未選中的中間狀態(tài)。缺省值為False。
Wrap屬性強(qiáng)迫這個按鈕是這一行的最后一個按鈕,下一個按鈕從下一行開始。缺省值為False。
Style屬性用來確定按鈕的樣式,它可以有五種不同的取值,這五種取值分別表示五種不同樣式的按鈕。
tbsButton表示按鈕正常顯示與一般的加速按鈕一樣。
tbsCheck表示單擊這種類型的按鈕時(shí)可以切換Down屬性。一旦你選中了該按鈕,那么按鈕將保持選中狀態(tài)直到再次單擊。
tbsDropDown表示按鈕顯示成一個向下的箭頭。
tbsSeparator表示按鈕顯示成工具條上的一個空格。
tbsDivider表示按鈕顯示成工具條上的一個垂直線段。
Grouped屬性確定是否允許連續(xù)的多個tbsCheck類型的按鈕組成一組。缺省值是False。如果連續(xù)的多個按鈕,每個按鈕的Grouped屬性都設(shè)置為True,同時(shí)Style屬性都設(shè)置為tbsCheck,那么這些組件一次只能選取一個。選中其中一個按鈕將使其他按鈕變成未選中狀態(tài)。
91)問:如何用加速按鈕創(chuàng)建工具條?
答:工具條的另一種創(chuàng)建方法是使用面板組件+加速按鈕SpeedButton的方法。加速按鈕在前面曾經(jīng)提到過,它與位圖按鈕很相似,也使用屬性Caption和Glyph放置文本和圖標(biāo),不過加速按鈕還有一些屬性是比較特殊的。
下面我們先介紹加速按鈕的屬性:
GroupIndex:通過GroupIndex屬性可以使加速按鈕像單選按鈕那樣使用。也就是說,把多個單選按鈕的GroupIndex屬性賦予相同的值以便組成一組,這樣這個組中的按鈕一次只能有一個按鈕可以被按下,當(dāng)你按下一個按鈕時(shí),其他按鈕就會彈起。需要注意的是GroupIndex必須大于0。如果GroupIndex屬性等于0,那么表示該按鈕是一個普通的加速按鈕。
Down:屬性值可以控制按鈕是否處于按下狀態(tài),當(dāng)該屬性值為True時(shí),按鈕處于按下狀態(tài)。你可以在設(shè)計(jì)時(shí)把屬性Down設(shè)置為True,這樣當(dāng)程序運(yùn)行時(shí),按鈕一開始就處于按下狀態(tài)。
AllowAllUp:這個屬性用來指定一個組中的所有加速按鈕是否可以同時(shí)處于未被按下的狀態(tài)。當(dāng)該屬性為True時(shí),單擊該組中被按下的按鈕,這個按鈕會彈起。當(dāng)該屬性為False時(shí),單擊該組中被按下的按鈕,這個按鈕不會彈起。
如果你比較一下加速按鈕和TToolButton組件就會發(fā)現(xiàn),它們都有上面介紹的這三種屬性,只不過TToolButton組件中使用屬性Grouped來完成類似于GroupIndex的功能。
92)問:用加速按鈕設(shè)計(jì)工具條與用Toolbar組件相比有什么不同?
答:用加速按鈕設(shè)計(jì)工具條時(shí)必須首先在窗體上放置面板組件,而且應(yīng)該把它的Align屬性設(shè)置為alTop(因?yàn)楣ぞ邨l一般都放在窗口的頂部)。然后在面板組件上放置加速按鈕。
一般要利用按鈕的Caption和Glyph屬性為加速按鈕設(shè)置文本和圖標(biāo)。如果這些按鈕只是像普通按鈕那樣操作的話,那么這樣設(shè)置就可以了。但是如果這些按鈕要像單選按鈕那樣使用,那么還必須對GroupIndex屬性進(jìn)行設(shè)置。
93)問:那如何用加速按鈕來設(shè)計(jì)工具條呢?
答:我們要用到Additional頁的可控組件ControlBar、Speedbutton與Win32頁面中的ToolBar。下面來看一下他的實(shí)現(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實(shí)際上是由一組狀態(tài)面板組成的,通常顯示在應(yīng)用程序窗口的底部,它的功能主要是顯示一些提示信息和狀態(tài)信息。例如,C++Builder的代碼編輯器底部就顯示了一個狀態(tài)條,而且顯示了多個狀態(tài)面板。
狀態(tài)條可以只顯示一個狀態(tài)面板,也可以顯示多個狀態(tài)面板。當(dāng)顯示多個狀態(tài)面板時(shí),狀態(tài)條被分割為幾個部分,每個部分都有自己的Text屬性,通過這個屬性就可以在狀態(tài)條顯示信息了。
如果要在狀態(tài)條上顯示多個狀態(tài)面板,就需要把狀態(tài)條的SimplePanel屬性設(shè)置為False,否則只能顯示一個狀態(tài)面板。
如果狀態(tài)條只需要顯示一個狀態(tài)面板,那么只要簡單地在窗體上放置狀態(tài)條就可以了。這時(shí)窗體上的文本保存在屬性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選項(xiàng)卡中,例如Font,Color,Open和Print對話框。其中OpenDialog對話框組件最具有代表性,只要掌握了它的用法,那么你也就會使用其他的對話框組件了。
97)問:對話框組件的特性有哪些特性呢?
答:對話框組件是一種不可見組件。當(dāng)你把它放在窗體上時(shí),它是一個大小不變的圖形按鈕,當(dāng)程序運(yùn)行時(shí),對話框組件不會立刻顯示,而必須使用每個對話框都有的Execute方法,使對話框顯示出來。
C++Builder提供的對話框大多數(shù)是有模式對話框。這種對話框要求首先必須響應(yīng)該對話框,然后才能繼續(xù)進(jìn)行工作。所謂響應(yīng)對話框就是你必須單擊OK或者Cancel按鈕,使對話框返回一個值。當(dāng)用戶單擊對話框上的按鈕OK時(shí),返回True,單擊Cancel按鈕返回False。用戶可以根據(jù)返回值的不同進(jìn)行不同的處理。
非模式的對話框使你在響應(yīng)對話框之前可以完成其他的工作,不必非要首先響應(yīng)對話框。這類對話框有:FindDialog,ReplaceDialog等。
98)問:能更細(xì)點(diǎn)的說明對話框組件的用法嗎?
答:我們就編制一個文本閱讀器來說明如何使用文件打開對話框。
打開一個新的窗體,我們放上一個按鈕組件和一個Memo組件,將Memo的ScrollBars屬性設(shè)置為ssBoth,使得Memo能夠顯示垂直和水平的滾動條。
選中Lines屬性,刪除里面的文本。
在窗體上放置OpenDialog組件。
選中OpenDialog組件,可以看出,OpenDialog有這樣一些主要的特性
FilrerIndex屬性用來指定每次打開對話框所用的缺省過濾器。
DefaultExt屬性是一個擴(kuò)展名,當(dāng)用戶在文件編輯框中輸入的文件名沒有帶擴(kuò)展名時(shí),對話框會用它作為文件缺省的擴(kuò)展名。
InitialDir屬性用來設(shè)置對話框打開時(shí)顯示的目錄。
FileName屬性用來返回最近一次選中的文件的完整路徑名。
Filter屬性,這個屬性用來設(shè)計(jì)在對話框的文件列表中將列出哪些類型的文件。
OpenDialog對話框提供了一個專門的編輯器來編輯屬性filter,單擊屬性Filter的value列中的省略好按鈕就可以打開這個編輯器。
左邊用來輸入過濾器的名稱,右邊用來輸入文件擴(kuò)展名。
現(xiàn)在,我們輸入文本文件和C++文件的過濾器。這樣,在每次打開對話框時(shí)候,在文件類型下拉列表中將顯示過濾器的名稱。
雙擊文打開按鈕,輸入這樣一段代碼:
|
//------------------------------------------
#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ù),這時(shí),打開文件對話框才顯示出來。如果執(zhí)行成功,這個函數(shù)返回true,否則返回false
{
Memo1->Lines->Clear();//把Memo中的內(nèi)容清掉 Caption=OpenDialog1->FileName; //獲得用戶選擇的文件的路徑名,并將它設(shè)置成窗體的標(biāo)題。注意,因?yàn)槭窃贔orm1窗口(容器)中進(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ì)算機(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)用戶選擇幫助時(shí),幫助系統(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ì)算機(jī)屏幕上顯示一個對話框,這個對話框有一個文本編輯框,可以用來接收用戶輸入的字符串信息。
Acaption:用來指定對話框的標(biāo)題;
Aprompt:用來指定對話框中顯示的內(nèi)容;
Adefault:用來指定對話框打開時(shí)在編輯框中顯示的內(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)用戶輸入一個不存在的目錄名時(shí),對話框?qū)?chuàng)建這個目錄;
sdPrompt:它必須和sdAllowCreate配合使用,當(dāng)用戶輸入一個不存在的目錄名時(shí),將出現(xiàn)消息對話框,詢問用戶是否創(chuàng)建這個新目錄。若用戶選擇是,在包含sdPerformCreate元素時(shí)將創(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)點(diǎn)我不想多說了,否則就不會有這么多的喜歡者,而一些入門的朋友還是選擇CB做為進(jìn)入C/C++的工具,這使我覺得這篇文章還是值得寫下去的,因?yàn)檫€是有那么的朋友在期待著的她的下一篇。這里對這些朋友表示感謝!
不在多說了,讓我開始新的篇章吧,在這里你將進(jìn)一步了解CB的特色,更希望我們CB的陣營越來越強(qiáng)大,更希望我們都成為真正意義上的好朋友,互勉互進(jìn)J
由于時(shí)間有限,加之作者水平有限,文中難免有些錯誤,還及時(shí)請指出J這里先表示感謝!
15.菜單
1)問:C++Builder的菜單項(xiàng)有很多,它們各有什么作用呢?
答:好吧,讓我們在新的篇章中首先來了解這方面的知識。下圖就是C++Builder集成開發(fā)環(huán)境中的菜單項(xiàng)名稱。
目資料/市北燃?xì)?網(wǎng)頁資料/青稞學(xué)習(xí)資源-C++%20Builder%20初學(xué)問與答%20(十一~十五).files/040810c_1.gif)
(1)首先是File菜單。通過File菜單,我們可以打開、保存、關(guān)閉以及打印新的或已經(jīng)存在的工程和文件。在這個菜單中,包含了這樣一些菜單項(xiàng):
目資料/市北燃?xì)?網(wǎng)頁資料/青稞學(xué)習(xí)資源-C++%20Builder%20初學(xué)問與答%20(十一~十五).files/040810c_2.gif)
“New”菜單項(xiàng)打開一個新的項(xiàng)目對話框,這個對話框包含了儲藏在對象儲藏里的模板。在此我們可以復(fù)制模板對象、從模板繼承得到一個新的對象,或者是修改模板對象。
“New Application”菜單項(xiàng)將根據(jù)對象儲藏里設(shè)定的缺省工程模板生成一個新的工程,缺省情況下為包含有一個空窗體的新工程。
“New Form”菜單項(xiàng)創(chuàng)建并加入一個新的窗體到工程中,這個窗體根據(jù)對象儲藏里的缺省Form模板建立。
“Open”用來載入一個已經(jīng)存在的工程、窗體、單元或者是文本文件到代碼編輯器。
“Open Project”菜單項(xiàng)用來載入一個已經(jīng)存在的工程。
“Reopen”菜單項(xiàng)用于列出最近關(guān)閉的工程和模塊,供用戶選擇、打開。
“Save”菜單項(xiàng)用于使用當(dāng)前的文件名保存當(dāng)前的文件。
“Save As”菜單項(xiàng)用于當(dāng)前文件的換名保存。
“Save Project As”菜單項(xiàng)用于將當(dāng)前工程文件換名保存。
“Save All”菜單項(xiàng)用于保存所有打開的文件,這些文件包括工程文件和模塊文件等。
“Close”菜單項(xiàng)用于關(guān)閉工程里的窗口、單元或關(guān)閉當(dāng)前工程等。
“Close All”菜單項(xiàng)用于關(guān)閉所有打開的文件。
“Include Unit Hdr”菜單項(xiàng)將一個選定的包含文件用#include語句加入到活動的模塊中。從而建立模塊間的程序聯(lián)系。這一項(xiàng)還是很有用處的。
“Print”菜單項(xiàng)用于將當(dāng)前活動的文件送到打印機(jī)。
“Exit”菜單項(xiàng)用于關(guān)閉打開的工程,并退出C++Builder集成開發(fā)環(huán)境。
(2)Edit菜單用于管理設(shè)計(jì)時(shí)的文本和組件。
目資料/市北燃?xì)?網(wǎng)頁資料/青稞學(xué)習(xí)資源-C++%20Builder%20初學(xué)問與答%20(十一~十五).files/040810c_3.gif)
其中菜單項(xiàng)“Undo/Undelete”用于撤消最后一個動作。
“Redo”用于恢復(fù)被Undo撤消的動作。
“Cut”用于將選定的項(xiàng)目刪除,并且將這個項(xiàng)目放到剪切板上。
“Copy” 用于將選定項(xiàng)目的拷貝到剪切板上。
“Paste”用于將剪切板上的內(nèi)容插入到代碼編輯器窗口或者窗口里。
“Delete”用于將選定的內(nèi)容刪除。
“Select All”菜單項(xiàng)用于選定窗口中所有的組件。
“Align to Grid”菜單項(xiàng)將選定的組件按最*近網(wǎng)格點(diǎn)對齊的原則進(jìn)行排列。
“Bring to Front”菜單項(xiàng)用于移動選定的組件到最前面層,這樣,當(dāng)他和其他組件重疊時(shí),就不可能被其他組件擋住。
“Send to Back”菜單項(xiàng)用于移動選定的組件到最后面一層。
“Align”用于排列組件。
“Size”菜單項(xiàng)用于設(shè)置組件的大小。
“Scale”菜單項(xiàng)用于按比例縮放窗體上組件的大小。
“Tab Order”菜單項(xiàng)用于修改當(dāng)前活動窗口在運(yùn)行時(shí),按Tab鍵后,焦點(diǎn)在所有組件中切換的順序。
“Creation Order”菜單項(xiàng)用于修改窗口中不可視組件用Tab鍵切換焦點(diǎn)的順序。
“Lock Controls”菜單項(xiàng)用于將窗口中所有的組件固定在當(dāng)前的位置。這可以防止你誤修改。
(3)Search菜單命令用于定位文本、錯誤、單元、變量以及代碼編輯器中的符號等。
目資料/市北燃?xì)?網(wǎng)頁資料/青稞學(xué)習(xí)資源-C++%20Builder%20初學(xué)問與答%20(十一~十五).files/040810c_4.gif)
“Find”菜單項(xiàng)用于在當(dāng)前文件中查找指定的文本。
“Find In Files”菜單項(xiàng)用于在多個文件中查找指定的文本,并將文本找到的信息顯示在代碼編輯器底部的信息窗口。
“Replace”菜單項(xiàng)用于查找指定的文本,并將這個指定的文本用指定的新的文本來代替。
“Search Again”菜單項(xiàng)用于重復(fù)查找。
“Incremental Search”菜單項(xiàng)用于按照我們鍵入過程中輸入的不完整的字符串查找。這樣,不需輸入全部文本就可以找到需要的文本。
“Go to Line Number”菜單項(xiàng)用于將光標(biāo)移動到指定的行。
“Go to Address”菜單項(xiàng)用于跳到指定的地址。
4)利用C++Builder集成開發(fā)環(huán)境中的視圖“View”菜單,可以顯示或隱藏C++Builder集成開發(fā)環(huán)境中的不同的部分,也可以用于打開屬于集成調(diào)試器的窗口。
“Project Manager”菜單項(xiàng)用于顯示工程管理器。
“Object Inspector”菜單項(xiàng)用于顯示對象監(jiān)視器窗口。
“Alignment Palette”菜單項(xiàng)用于顯示排版窗口。
“Component List”菜單可以彈出一個包含所有組件列表的窗口,在這個窗口中可以很方便的根據(jù)組件名字找到組件,并放置到窗體上。
“Window List”菜單彈出一個包含所有打開窗口的對話框,從這個對話框可以方便的激活任意C++Builder的窗口。
目資料/市北燃?xì)?網(wǎng)頁資料/青稞學(xué)習(xí)資源-C++%20Builder%20初學(xué)問與答%20(十一~十五).files/040810cc_1.gif)
“Debug Windows”菜單包含一些有關(guān)調(diào)試的子菜單。他有以下幾個子菜單項(xiàng):
①“Breakpoints”菜單項(xiàng)用于列表顯示斷點(diǎn)對話框。
②“Call Stack”菜單項(xiàng)用于顯示調(diào)用堆棧對話框。
③“Watches”菜單項(xiàng)用于顯示觀察列表對話框。
④“Local Variables”菜單項(xiàng)用來監(jiān)視局部變量。
⑤“Threads”菜單項(xiàng)用于顯示線程狀態(tài)框。
⑥“Modules”菜單項(xiàng)用于顯示模塊窗口。
⑦“Event log”用于顯示事件的記錄。
⑧“CPU”用于顯示CPU窗口。
“Toggle Form/Unit”菜單項(xiàng)用于在窗體和單元之間來回切換活動狀態(tài)。
“Units”菜單項(xiàng)用于顯示查看單元對話框。
“Forms”菜單項(xiàng)用于顯示查看窗體對話框。
“Type Library”菜單項(xiàng)用于顯示類型庫編輯器窗口。
“New Edit Window”菜單項(xiàng)用于在代碼編輯器中打開一個新的頁。
“Toolbar”菜單項(xiàng)用于顯示/隱藏工具欄。
(5)在C++Builder集成開發(fā)環(huán)境中,利用工程(Project)菜單可以編譯、建立應(yīng)用程序,當(dāng)然,這些工作的進(jìn)行必須首先要打開一個工程文件。
目資料/市北燃?xì)?網(wǎng)頁資料/青稞學(xué)習(xí)資源-C++%20Builder%20初學(xué)問與答%20(十一~十五).files/040810cc_2.gif)
“Add to Project”菜單項(xiàng)用于向工程文件中加入一個文件。
“Remove from Project”菜單項(xiàng)用于從工程文件中刪除一個文件。
“Import Type Library”菜單項(xiàng)用于向工程中引入一個類型庫。
“Add To Repository”菜單項(xiàng)用于將一個工程加入到對象儲藏中。
“View Source”菜單項(xiàng)用于在代碼編輯器中打開工程源文件。
“View Makefile”菜單項(xiàng)用于在代碼編輯器中打開擴(kuò)展名為.BPR的工程Make文件。
“Add New Project”菜單項(xiàng)用于打開新項(xiàng)目(New Items)對話框,這個對話框中包含有新對象和儲藏在對象儲藏中的對象。
“Add Existing Project”菜單項(xiàng)用于添加一個已經(jīng)存在的工程。
“Compile Unit”菜單項(xiàng)用于編譯上次編譯后任何經(jīng)過修改了的源代碼程序。
“Make project”菜單項(xiàng)對當(dāng)前工程中從上一次編譯后又已經(jīng)修改的文件進(jìn)行編譯,并生成最終的應(yīng)用程序。
“Build project”菜單項(xiàng)重新編譯工程中所有的文件,而不管文件是否修改。
“Information for project”菜單項(xiàng)顯示工程所有有關(guān)構(gòu)造工程的信息和狀態(tài)。
“Make All Projects”菜單項(xiàng)構(gòu)造工程組中所有已經(jīng)改變的工程。
“Build All Projects”菜單項(xiàng)重新創(chuàng)建工程組中所有的工程,而不管工程是否改變。
“Web Deployment Options”菜單項(xiàng)對完成配置的ActiveX控制或活動窗體到網(wǎng)絡(luò)服務(wù)器進(jìn)行設(shè)置。
“Web Deploy”菜單項(xiàng)用于在設(shè)置了網(wǎng)絡(luò)配置選項(xiàng),并編譯了工程以后,配置最終的ActiveX控制或活動窗體。
“Options”菜單項(xiàng)用于修改工程的連接、編譯版本等配置。
(6)C++Builder集成開發(fā)環(huán)境中的Run菜單包含了C++Builder集成調(diào)試的一些菜單命令。這些菜單命令形成了集成調(diào)試器的核心功能。
目資料/市北燃?xì)?網(wǎng)頁資料/青稞學(xué)習(xí)資源-C++%20Builder%20初學(xué)問與答%20(十一~十五).files/040810cc_3.gif)
“Run”菜單項(xiàng)用于編譯并運(yùn)行應(yīng)用程序。
Attatch to Process”菜單項(xiàng)用來調(diào)試一個當(dāng)前正在運(yùn)行的進(jìn)程。
“Parameters”菜單項(xiàng)用于指定應(yīng)用程序運(yùn)行時(shí)的初始參數(shù)。
“Register ActiveX Server”菜單項(xiàng)用于將ActiveX控制加入到窗口登記表中。
“Unregister ActiveX Server”菜單項(xiàng)用于將ActiveX控制從窗口登記表中刪除。
“Install COM+ Objects”菜單項(xiàng)用來安裝微軟的COM+對象。
“Step Over”菜單項(xiàng)用于一次執(zhí)行應(yīng)用程序中的一行,而忽略程序行中的函數(shù)調(diào)用等。
“Trace Into”菜單項(xiàng)用于一次執(zhí)行應(yīng)用程序中的一行,但是,遇到程序行中的函數(shù)調(diào)用時(shí),程序的運(yùn)行則轉(zhuǎn)移到函數(shù)的內(nèi)部運(yùn)行,這樣,便于程序調(diào)試人員跟蹤程序的運(yùn)行。
“Trace To Next Source Line”菜單項(xiàng)執(zhí)行應(yīng)用程序,在下一個可執(zhí)行的程序代碼中停止運(yùn)行。
“Run To Cursor”菜單項(xiàng)運(yùn)行載入的程序,在程序運(yùn)行到代碼編輯器窗口中的光標(biāo)所在位置時(shí)停下來。
“Show Execution Point”菜單項(xiàng)將光標(biāo)放在一個編輯窗口的可執(zhí)行點(diǎn)上。
“Program Pause”菜單項(xiàng)用于暫時(shí)停止一個正在運(yùn)行的應(yīng)用程序。
“Program Reset”菜單項(xiàng)用于結(jié)束當(dāng)前運(yùn)行的程序,并將應(yīng)用程序從內(nèi)存中釋放,重新載入這個應(yīng)用程序,然后將光標(biāo)放在程序運(yùn)行的起始點(diǎn)上。
“Inspect”菜單項(xiàng)打開監(jiān)視對話框,在這個監(jiān)視對話框中,調(diào)試人員可以監(jiān)視、檢查、核對變量和表達(dá)式的值。
“Evaluate/Modify”菜單項(xiàng)打開評估/修改(Evaluate/Modify)對話框,在這個對話框中,可以評估,也可以修改表達(dá)式的值。
“Add Watch”菜單項(xiàng)用于打開觀察屬性對話框,在這個觀察對話框中,調(diào)試人員可以加入、刪除觀察項(xiàng)。
“Add Breakpoint”菜單項(xiàng)用于設(shè)置斷點(diǎn),通過它下面的菜單項(xiàng),我們可以用很多種方式設(shè)置斷點(diǎn)。
(7)在C++Builder集成開發(fā)環(huán)境中,還有Component菜單。在組件菜單下的菜單命令是有關(guān)建立、安裝、重建組件的菜單項(xiàng)。其中:
目資料/市北燃?xì)?網(wǎng)頁資料/青稞學(xué)習(xí)資源-C++%20Builder%20初學(xué)問與答%20(十一~十五).files/040815_c1.jpg)
New Component”菜單項(xiàng)打開組件向?qū)Ы⑿陆M件。
“Install Component”菜單項(xiàng)安裝新的組件。
“Import ActiveX Control”菜單項(xiàng)將ActiveX控制的類型庫加入到C++Builder的工程中。
“Create Component Template”菜單項(xiàng)定制一個組件,并用新的名字、組件板頁和圖標(biāo)保存這個組件作為組件模板。
“Install Packages”菜單項(xiàng)指定工程所需要的程序包。
“Configure Palette”菜單項(xiàng)用于打開組件板對話框。
(8)在開發(fā)數(shù)據(jù)庫方面的應(yīng)用程序的時(shí)候,C++Builder集成開發(fā)環(huán)境中的Database菜單就會發(fā)揮作用,在數(shù)據(jù)庫菜單下包含的菜單項(xiàng)允許程序人員創(chuàng)建、修改、跟蹤、查看數(shù)據(jù)庫。
目資料/市北燃?xì)?網(wǎng)頁資料/青稞學(xué)習(xí)資源-C++%20Builder%20初學(xué)問與答%20(十一~十五).files/040815_c2.jpg)
“Explore”菜單項(xiàng)打開結(jié)構(gòu)查詢語言/數(shù)據(jù)庫瀏覽器,打開的瀏覽器保持著應(yīng)用程序與遠(yuǎn)程數(shù)據(jù)庫服務(wù)之間的連接,同時(shí),也允許程序人員創(chuàng)建、編輯BDE別名和元數(shù)據(jù)對象。
“SQL Monitor”菜單項(xiàng)打開SQL監(jiān)視器,在這個監(jiān)視器中,我們可以看到實(shí)際的、通過SQL連接到遠(yuǎn)程數(shù)據(jù)服務(wù)器或者是通過ODBC連接到ODBC數(shù)據(jù)源的調(diào)用語句。
“Form Wizard”菜單項(xiàng)使用數(shù)據(jù)庫窗體向?qū)?chuàng)建一個包含有顯示從一個局部或者遠(yuǎn)程數(shù)據(jù)庫獲取數(shù)據(jù)的窗體。
(9)工具(Tools)菜單在C++ Builder集成開發(fā)環(huán)境中也占據(jù)著重要的地位。通過工具菜單,我們可以查看、修改集成環(huán)境的設(shè)置,可以修改工具菜單中的程序列表,也可以創(chuàng)建、編輯映像。
目資料/市北燃?xì)?網(wǎng)頁資料/青稞學(xué)習(xí)資源-C++%20Builder%20初學(xué)問與答%20(十一~十五).files/040815_c3.jpg)
“Environment Options”菜單項(xiàng)用于定制編輯器、瀏覽器,配置環(huán)境的優(yōu)先性,以及定制組件板的外形等。
“Debugger Options”菜單項(xiàng)用來對調(diào)試環(huán)境進(jìn)行設(shè)置。
“Repository”菜單項(xiàng)用于維護(hù)對象儲藏對話框。
“Import RC Scripts”菜單項(xiàng)將資源文件轉(zhuǎn)換成C++ Builder的形式,并將轉(zhuǎn)化后的資源加入到C++ Builder當(dāng)前工程中。
“Configure Tools”菜單項(xiàng)顯示工具選項(xiàng)對話框,通過這個對話框,我們可以加入、刪除、編輯工具菜單,從而將常用工具集成到這個菜單中。
“DataBase Desktop”菜單項(xiàng)顯示數(shù)據(jù)庫平臺(database desktop),在數(shù)據(jù)庫平臺上,可以創(chuàng)建和重構(gòu)數(shù)據(jù)庫表,或者瀏覽、編輯表中的數(shù)據(jù)等等。
“Visual C++ Project Conversition Utility”菜單項(xiàng)用來將Visual C++的工程轉(zhuǎn)換成C++Builder的工程文件。
“Image Editor”菜單項(xiàng)啟動映像編輯器(Image editor),在這個映像編輯器中,我們可以創(chuàng)建、編輯資源文件、圖標(biāo)、位圖以及光標(biāo)文件。
(10)Window菜單項(xiàng)是C++ Builder6新提供的一個菜單單元。
目資料/市北燃?xì)?網(wǎng)頁資料/青稞學(xué)習(xí)資源-C++%20Builder%20初學(xué)問與答%20(十一~十五).files/040815_c4.jpg)
“Form1”在多窗口時(shí)切換到第一個窗口。
“Object Inspector”切換到對象檢查器,方便查看與何改屬性及事件。
“Object TreeView”使當(dāng)前的對象樹狀窗口成為焦點(diǎn)。
“Unit1.cpp,Editor”切換到代碼編輯器中,進(jìn)行代碼查看與修改。
“Next Window”多窗口時(shí)顯示下一個窗口。窗口通常按創(chuàng)建順序。
(11)在C++Builder集成開發(fā)環(huán)境中,最后一個菜單為Help。利用這個幫助菜單,我們可以獲得在線幫助。
目資料/市北燃?xì)?網(wǎng)頁資料/青稞學(xué)習(xí)資源-C++%20Builder%20初學(xué)問與答%20(十一~十五).files/040815_c5.jpg)
“Contents”菜單項(xiàng)顯示所有C++Builder幫助文件總內(nèi)容的列表。
“Index”菜單項(xiàng)顯示使用幫助索引。
“Inprise Home Page”菜單項(xiàng)用于跳轉(zhuǎn)到Inprise公司的主頁。
“C++Builder Home Page”菜單項(xiàng)用于跳轉(zhuǎn)到Inprise公司的C++Builder主頁。
“Inprise Programs and Services”菜單項(xiàng)用于跳轉(zhuǎn)到Inprise公司的產(chǎn)品和服務(wù)主頁中。
“C++Builder Direct”用于通過瀏覽器引導(dǎo)用戶訪問C++Builder相關(guān)網(wǎng)站。
“customize”菜單項(xiàng)用于自定義包含在主幫助內(nèi)容和索引中的幫助文件。
“About”菜單項(xiàng)用于顯示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;
從這一點(diǎn)在看他二者是完全一樣的,只是書寫起來后者更方便一些,前者是意圖更明了一些。
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)換
|
無,但可以利用指針實(shí)現(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)如何實(shí)現(xiàn)傳統(tǒng)字符串與AnsiString字符串的相互轉(zhuǎn)換?
答:傳統(tǒng)的C語言是使用字符來組成字符串的(字符串末尾必須有’\0’做為結(jié)束標(biāo)志),其格式和AnsiString并不相同。由于在CB中我大量使用AnsiString格式,所以有時(shí)也難免要進(jìn)行一些轉(zhuǎn)換,我們可以通過下列三種方法來實(shí)現(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)字符串可以利用字符指針來實(shí)現(xiàn):
可以通過字符指針來實(shí)現(xiàn):
char *s;
s=Edit->Text.c_str();
方法3:利用字符指針實(shí)現(xiàn)傳統(tǒng)字符串轉(zhuǎn)換成AnsiString:
char *s=”試一試,看看能不能成功!”;
Edit->Text=s;
7)Set類如何用?
答:嚴(yán)格來說,CB的集合(Set)并不是一個類,而是一個類模板(Class Template)。它用來實(shí)現(xiàn)集合這個抽象數(shù)據(jù)類型。
使用它可以定義一個實(shí)際的集合類型,它的一般聲明模式是這樣的:
|
typedef Set<type,minval,maxval>ClassName;
|
其中type用來指定集合元素的類型;minval指定集合元素的最小值;maxval指定集合元素的最大值。
舉個例子來說,若是我們定義一個以TupperSet為名的集合類,這個集合類的可能元素為26個大寫字母,我們可以這樣定義:
|
typedef Set<char,’A’,’Z’>TupperSet;
|
應(yīng)用時(shí)我們可以使用這個集合類聲明一個具體的集合對象,如:
8)能不能告訴我一下Set類有哪些常見的使用方法或操作符?
答:當(dāng)然可以了,以下是它的一些常見操作符和方法:
Clear方法:清除集合對象內(nèi)的所有元素,使集合成為空集;
Contains方法:查詢集合中是否包含指定的元素,其聲明為:
|
bool _fastcall Contains(const T el)const; operator-:兩個集合進(jìn)行求差運(yùn)算,結(jié)果集合包含兩個集合中不相同的元素; operator*:求兩個集合的交集; operator+:求兩個集合的并集; operator<<:添加一個元素到指定集合; operator>>:從集合中刪除一個指定元素。 其實(shí)Set類的應(yīng)該比較廣泛,比如判斷我們是否按下鼠標(biāo)左鍵,可以用如下的語句: if(Shift.Contains(ssLeft))。
|
9)聽說在CB中有一個可以定時(shí)觸發(fā)的組件,能否介紹一下它的屬性和事件嗎?
答:你說的是Timer組件,它位于組件欄的System組件頁中。使用它并不難,因?yàn)樗膶傩浴⑹录貏e少:
Enabled屬性:布爾類型。缺省時(shí)為true,這時(shí)定時(shí)器將經(jīng)過一段時(shí)間就觸發(fā)OnTimer事件。在這個屬性從false變?yōu)閠rue時(shí),時(shí)鐘將重新開始計(jì)時(shí)。
Interval屬性:這個屬性用來設(shè)置每隔多長時(shí)間就觸發(fā)一次OnTimer事件,以毫秒為單位。缺省為1000毫秒。
OnTimer事件:這個事件在Enabled屬性設(shè)置為true時(shí),每隔Interval屬性指定的時(shí)間觸發(fā)一次。 10)原來Timer組件如此簡單,但我還有些不懂為什么說它是一個可找替循環(huán)語句,能否舉一個例子說明下OnTimer事件?
答:它不能取替循環(huán)語句的,當(dāng)然在特定條件下,他比循環(huán)語句更有效,尤其是在涉及到按時(shí)循環(huán)時(shí)。在我編寫的春輝網(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ù))
|
|