CBuilder開發(fā)環(huán)境課件_第1頁(yè)
CBuilder開發(fā)環(huán)境課件_第2頁(yè)
CBuilder開發(fā)環(huán)境課件_第3頁(yè)
CBuilder開發(fā)環(huán)境課件_第4頁(yè)
CBuilder開發(fā)環(huán)境課件_第5頁(yè)
已閱讀5頁(yè),還剩139頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

CBuilder開發(fā)環(huán)境2024/4/16CBuilder開發(fā)環(huán)境1.1C++Builder概覽C++Builder是Borland(Inprise)公司開發(fā)的Windows下可視化的C++編程環(huán)境,它常被簡(jiǎn)稱為BCB(分別取Borland、C++、Builder的第一個(gè)字母)或CB。BCB不僅功能強(qiáng)大,而且學(xué)習(xí)簡(jiǎn)單、使用方便,深受軟件開發(fā)人員的喜愛。C++Builder目前的最新版本是6.0版。CBuilder開發(fā)環(huán)境1.1.1Windows環(huán)境下的快速開發(fā)工具有一句話在軟件開發(fā)人員之間流傳很廣,并且在流傳過(guò)程中形成了若干不同的版本。這句話的上半句是“真正的程序員用C++”,下半句則是“聰明的程序員用X”。X在這句話的不同版本中分別為VB、Delphi、PB等。有人覺得對(duì)于這種“X”王婆賣瓜式的自夸,無(wú)需當(dāng)真,但依筆者看卻未必。因?yàn)閂B、Delphi、PB等開發(fā)工具之間有一個(gè)共同之處,即它們都是RAD(RapidApplicationDevelopment,快速開發(fā)工具)。CBuilder開發(fā)環(huán)境因此,若站在比較公正的立場(chǎng)來(lái)說(shuō),這后半句應(yīng)該是“聰明的程序員用RAD”。此說(shuō)法若能成立,那么一個(gè)必然的推論就是:“真正的并且聰明的程序員應(yīng)該用基于C++的RAD”。按照該標(biāo)準(zhǔn)選擇編程環(huán)境,就目前來(lái)說(shuō),無(wú)疑應(yīng)該首選Borland公司的C++Builder。CBuilder開發(fā)環(huán)境傳統(tǒng)的“軟件工程”提倡“先設(shè)計(jì),后編程”,設(shè)計(jì)一旦完成,則不允許做過(guò)多修改。這種設(shè)計(jì)原則固然有其合理的一面,但嚴(yán)重制約了開發(fā)效率。對(duì)于某些開始時(shí)對(duì)需求并不十分清楚的應(yīng)用項(xiàng)目,若按此辦理則往往將開發(fā)人員逼入窘境?!翱焖僭头ā被騌AD則反其道而行之,它把設(shè)計(jì)看成需經(jīng)多次反復(fù)才能完成的工作:對(duì)一個(gè)項(xiàng)目的初步分析完成后,即據(jù)此開發(fā)出一個(gè)程序“原型”;然后與用戶一起對(duì)該“原型”進(jìn)行評(píng)價(jià),找出不足,修改設(shè)計(jì)后再產(chǎn)生程序。CBuilder開發(fā)環(huán)境這一過(guò)程可重復(fù)多次,直到所開發(fā)的系統(tǒng)達(dá)到用戶要求為止。但要有效實(shí)現(xiàn)RAD,必須擁有優(yōu)良的編程環(huán)境和代碼生成工具,由于BCB具有可視化、面向?qū)ο蟮忍匦?,特別適合作為Windows下企業(yè)級(jí)應(yīng)用的RAD開發(fā)環(huán)境使用。目前,稱得上RAD的產(chǎn)品有VB、Delphi、C++Builder、PB、VFP等。相對(duì)于VB等“解釋型”的語(yǔ)言來(lái)說(shuō),Delphi、BCB這些以“編譯型”的語(yǔ)言為基礎(chǔ)的RAD編程環(huán)境效率較高,功能也更強(qiáng)大。CBuilder開發(fā)環(huán)境作為一個(gè)RAD開發(fā)環(huán)境,BCB對(duì)Windows和Internet上的各種流行技術(shù)都提供了充分的支持,C++Builder6.0在先前版本基礎(chǔ)上又增加了許多新的功能和特性。它具有很強(qiáng)的圖形、圖像和多媒體處理功能;對(duì)Windows下的OLE、COM、ActiveX技術(shù)提供了很好的支持;在數(shù)據(jù)庫(kù)編程方面,BCB提供了各種連接方案以及多層分布式數(shù)據(jù)處理等先進(jìn)技術(shù);在Internet和Intranet編程方面,BCB提供了Socket組件和InternetExpress、WebSnap等技術(shù)。BCB的另一優(yōu)點(diǎn)是具有極強(qiáng)的兼容能力,它可以編譯連接TurboC、BorlandC++、VC++、Delphi等工具開發(fā)的源代碼或目標(biāo)模塊。CBuilder開發(fā)環(huán)境1.1.2C++編譯器作為第四代編程環(huán)境,BCB具有一定的代碼自動(dòng)生成的能力,但仍需人工編寫部分程序代碼,這些代碼必須用C++語(yǔ)言寫成。因此,BCB可被看作是Windows下一個(gè)功能強(qiáng)大的C++編譯器,它支持ANSIC++標(biāo)準(zhǔn)并在使用部件技術(shù)等方面作了擴(kuò)充。BCB具有編譯速度快等優(yōu)點(diǎn),經(jīng)BCB編譯后產(chǎn)生的目標(biāo)文件尺寸小、效率高,可直接在Windows環(huán)境下運(yùn)行。CBuilder開發(fā)環(huán)境C++是在C語(yǔ)言基礎(chǔ)上擴(kuò)充而成的一種編程語(yǔ)言,它具有C語(yǔ)言緊湊、高效等優(yōu)點(diǎn)并支持面向?qū)ο蟪绦蛟O(shè)計(jì)的技術(shù),本書第2章將簡(jiǎn)單介紹C++語(yǔ)言和面向?qū)ο蟪绦蛟O(shè)計(jì)。對(duì)已初步掌握C語(yǔ)言的讀者來(lái)說(shuō),只需對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)的有關(guān)概念稍有了解,就能使用BCB編寫簡(jiǎn)單程序了。當(dāng)然,要使用BCB編寫復(fù)雜的、高質(zhì)量的程序,就必須對(duì)所使用的C++語(yǔ)言的各種特性有深刻理解。我們認(rèn)為,掌握C++和面向?qū)ο蟪绦蛟O(shè)計(jì)是一個(gè)從實(shí)踐中學(xué)習(xí)的循序漸進(jìn)的過(guò)程,本書會(huì)提供一個(gè)很好的起點(diǎn)。

CBuilder開發(fā)環(huán)境1.1.3C++Builder的安裝和啟動(dòng) C++Builder6.0有普通版和Client/Server版,通常用光盤安裝。它對(duì)硬件的最低要求并不高,但為了使用效果好一點(diǎn),我們建議采用如下基本硬件配置:(1)CPU為PentiumII350以上;(2)內(nèi)存128MB以上;(3)硬盤總?cè)萘?0GB以上,可用空間1GB以上,其中安裝BCB約用去600MB以上。CBuilder開發(fā)環(huán)境BCB應(yīng)安裝在32位的Windows上,它們包括Windows95、Windows98、Windows2000、WindowsNT4.0、WindowsMe以及WindowsXP等。執(zhí)行光盤上的Setup程序進(jìn)行安裝,主要步驟有:(1)按提示輸入軟件的序列號(hào)和密碼;(2)選擇安裝方式,安裝方式有Typical、Compact和Custom,當(dāng)硬盤空間充足時(shí)可選Typical,否則選Compact,有經(jīng)驗(yàn)的用戶也可選Custom;CBuilder開發(fā)環(huán)境(3)選擇安裝目錄,一般可采用由安裝程序建議的目錄。安裝完畢后,在“開始”菜單的“程序”項(xiàng)下新添了一項(xiàng)“BorlandC++Builder6”,點(diǎn)擊該項(xiàng)即能啟動(dòng)C++Builder6.0。啟動(dòng)后的界面如圖1-1所示。CBuilder開發(fā)環(huán)境圖1-1啟動(dòng)BCB后的畫面CBuilder開發(fā)環(huán)境1.1.4一個(gè)簡(jiǎn)單的程序 為了讓讀者盡早了解在BCB下編程是怎么回事,我們?cè)诒竟?jié)給出一個(gè)簡(jiǎn)單的“Hello,World!”程序。該程序運(yùn)行時(shí)顯示一個(gè)窗口,窗口內(nèi)有一個(gè)命令按鈕,當(dāng)按鈕被點(diǎn)擊時(shí),窗口的標(biāo)題顯示為“Hello,World!”。下面,我們?cè)敿?xì)給出在BCB下編制該程序的每一步。(1)啟動(dòng)BCB,出現(xiàn)如圖1-1所示的界面。此時(shí)編程環(huán)境中已存在一個(gè)應(yīng)用程序的框架,顯示在該圖右下方的標(biāo)題為Form1的一個(gè)空白的窗口即是該應(yīng)用程序的窗口,習(xí)慣上我們稱它為窗體。CBuilder開發(fā)環(huán)境(2)點(diǎn)擊控件面板上按鈕圖案選取按鈕控件,然后在應(yīng)用程序窗體中選擇適當(dāng)位置將按鈕放到該空白窗體上,如圖1-2和圖1-3所示。

(3)在窗體內(nèi)選中按鈕,然后在對(duì)象檢閱器內(nèi)編輯按鈕Button1屬性。如圖1-4所示,我們把按鈕的Caption屬性改為“Hello”。這使得窗體中按鈕的標(biāo)題也變?yōu)椤癏ello”。CBuilder開發(fā)環(huán)境圖1-2點(diǎn)擊面板上按鈕控件CBuilder開發(fā)環(huán)境圖1-3將按鈕放入窗體CBuilder開發(fā)環(huán)境圖1-4修改按鈕的標(biāo)題CBuilder開發(fā)環(huán)境(4)雙擊窗體中標(biāo)題為Hello的按鈕,BCB自動(dòng)為該按鈕的單擊事件建立了相應(yīng)的處理程序(方法)TForm1::Button1Click的框架,此時(shí)代碼編輯窗口被激活,文本插入點(diǎn)處有如下代碼:void__fastcallTForm1::Button1Click(TObject*Sender){

}這正是TForm1::Button1Click事件代碼的框架。在一對(duì)大括號(hào)內(nèi)可以由用戶輸入C++的代碼,這些代碼將在該按鈕被單擊(Click)時(shí)執(zhí)行。在本例中,我們輸入:CBuilder開發(fā)環(huán)境Form1->Caption="Hello,World!";即使得TForm1::Button1Click事件有如下代碼:void__fastcallTForm1::Button1Click(TObject*Sender){Form1->Caption="Hello,World!";}CBuilder開發(fā)環(huán)境(5)點(diǎn)擊位于BCB界面左上方的工具欄上標(biāo)有綠色箭頭的那個(gè)按鈕,就可以編譯、運(yùn)行該程序了。若一切順利,程序運(yùn)行后,按下“Hello”按鈕,窗口的標(biāo)題就會(huì)變?yōu)椤癏ello,World!”,如圖1-5所示。至此,我們的第一個(gè)Windows應(yīng)用程序已編制完成,當(dāng)然這個(gè)程序的功能太簡(jiǎn)單了。但請(qǐng)記住,我們有了一個(gè)很好的程序框架,在此基礎(chǔ)上增加一點(diǎn)功能并不是難事。

CBuilder開發(fā)環(huán)境最后,我們還要介紹如何將已完成的程序保存。BCB將一個(gè)完整的應(yīng)用程序稱為項(xiàng)目,它由若干文件組成,保存一個(gè)項(xiàng)目也就是要將該項(xiàng)目的所有文件存盤。CBuilder開發(fā)環(huán)境圖1-5Hello程序運(yùn)行時(shí)的畫面CBuilder開發(fā)環(huán)境圖1-6保存單元文件CBuilder開發(fā)環(huán)境通常,應(yīng)該為項(xiàng)目建立一個(gè)文件夾用于保存該項(xiàng)目的文件。我們?yōu)椤癏ello”程序的項(xiàng)目建立的文件夾,可以取名為Hello。在BCB中執(zhí)行菜單命令File→SaveAll。此時(shí),會(huì)彈出如圖1-6所示的保存單元文件對(duì)話框。在標(biāo)有“保存在”標(biāo)簽的組合框內(nèi)選中Hello文件夾,在“文件名”文本框內(nèi)更改文件名,最后按“確認(rèn)”按鈕保存文件。由于SaveAll是保存項(xiàng)目的所有文件,因而一般會(huì)出現(xiàn)兩次保存文件對(duì)話框:第一次,要求保存與程序主窗體Form1對(duì)應(yīng)的代碼單元文件,它的默認(rèn)文件名是Unit1;第二次,要求保存項(xiàng)目文件,它的默認(rèn)文件名是Project1(對(duì)于初學(xué)者,最好采用默認(rèn)的文件名)。CBuilder開發(fā)環(huán)境回到Windows下,看看Hello文件夾內(nèi)有哪些文件。我們會(huì)發(fā)現(xiàn)至少有六個(gè)文件:Project1.bpr,Project1.cpp,Project1.res,Unit1.cpp,Unit1.dfm和Unit1.h。這些文件可看作是“Hello”項(xiàng)目的源文件,若我們?cè)诒4骓?xiàng)目后再運(yùn)行一次程序,就會(huì)發(fā)現(xiàn)Hello文件夾內(nèi)又增加了四個(gè)文件:Project1.obj,Project1.exe,Project1.tds和Unit1.obj。其中的Project1.exe可脫離BCB在Windows下運(yùn)行,它的大小僅為25KB。由于這四個(gè)文件可以通過(guò)編譯生成,當(dāng)磁盤空間緊缺時(shí)(例如,當(dāng)需要保存到軟盤時(shí))可將它們刪除,特別是Project1.tds文件,它的尺寸很大。CBuilder開發(fā)環(huán)境1.2C++語(yǔ)言簡(jiǎn)介如前所述,BCB使用C++作為編程語(yǔ)言。C++語(yǔ)言是在C語(yǔ)言的基礎(chǔ)上擴(kuò)充而成的,它具有C語(yǔ)言緊湊、高效等優(yōu)點(diǎn)并支持面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)。本書假定讀者已具有使用C語(yǔ)言編程的基礎(chǔ)知識(shí),我們?cè)诖嘶A(chǔ)上介紹學(xué)習(xí)本書時(shí)所需的C++知識(shí)。CBuilder開發(fā)環(huán)境1.2.1面向?qū)ο蟪绦蛟O(shè)計(jì)自20世紀(jì)80年代以來(lái),面向?qū)ο蟮募夹g(shù)引起了計(jì)算機(jī)界的極大關(guān)注。隨著面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的漸趨成熟,作為一種新的程序設(shè)計(jì)風(fēng)格,其應(yīng)用也得到了迅速發(fā)展。面向?qū)ο笫且环N對(duì)應(yīng)于真實(shí)世界概念化的抽象思維方法,面向?qū)ο蠓椒ǖ幕境霭l(fā)點(diǎn)就是按照人類認(rèn)識(shí)世界的方法和思維方式來(lái)分析和解決問(wèn)題的。在面向?qū)ο蟮南到y(tǒng)中,對(duì)象(Object)是一個(gè)封裝了數(shù)據(jù)屬性和操作行為的實(shí)體。數(shù)據(jù)描述了對(duì)象的狀態(tài),操作可操縱私有數(shù)據(jù),改變對(duì)象的狀態(tài)。對(duì)象內(nèi)的操作通常叫做方法,對(duì)象之間進(jìn)行通訊的一種構(gòu)造叫做消息。CBuilder開發(fā)環(huán)境在面向?qū)ο笙到y(tǒng)中,人們并不是逐個(gè)地描述各個(gè)具體的對(duì)象,而是將注意力集中于具有相同特性的一類事物,抽象出這樣一類事物的共同結(jié)構(gòu)和行為。類(Class)是對(duì)對(duì)象的抽象及描述,是具有共同屬性和操作的多個(gè)對(duì)象的相似特性的統(tǒng)一描述體,類中的每個(gè)對(duì)象都是該類的實(shí)例。由于類描述了數(shù)據(jù)結(jié)構(gòu)(對(duì)象屬性)、算法(方法)和外部接口(消息協(xié)議),因此,類提供了完整的解決問(wèn)題的能力。CBuilder開發(fā)環(huán)境在類的描述中,每個(gè)類要有一個(gè)名字,要能表示一組對(duì)象的共同特征,還必須給出一個(gè)生成對(duì)象實(shí)例的具體方法。類不是孤立的,類與類之間有各種關(guān)系。其中,特別重要的是層次關(guān)系,即可以有父類與子類,它們之間有派生和繼承的關(guān)系,繼承關(guān)系具有傳遞性。在收到消息時(shí),對(duì)象要予以響應(yīng)。不同的對(duì)象收到同一消息可產(chǎn)生完全不同的結(jié)果,這一現(xiàn)象叫做多態(tài),多態(tài)的實(shí)現(xiàn)依賴于繼承性。

CBuilder開發(fā)環(huán)境要設(shè)計(jì)一個(gè)有意義的類并非易事,但一旦設(shè)計(jì)完成,就能在程序中被重復(fù)使用。因此,一個(gè)成熟的面向?qū)ο蟮木幊汰h(huán)境往往會(huì)提供一組精心設(shè)計(jì)而成的類供用戶使用,以提高軟件開發(fā)的效率和質(zhì)量,一般稱這樣的一組類為類庫(kù)。C++Builder提供的類庫(kù)名為VCL,而VC++則提供了一個(gè)叫做MFC的類庫(kù)。CBuilder開發(fā)環(huán)境面向?qū)ο蟪绦蛟O(shè)計(jì)的概念提出來(lái)以后,某些公司和機(jī)構(gòu)曾經(jīng)開發(fā)出一些純粹的面向?qū)ο笤O(shè)計(jì)語(yǔ)言,如Smalltalk、Ada等,但是由于種種原因,這些語(yǔ)言沒(méi)能夠廣泛地流行起來(lái)。從本質(zhì)上來(lái)講,我們今天所廣泛采用的面向?qū)ο蟮脑O(shè)計(jì)語(yǔ)言C++并不是一種純粹的面向?qū)ο蟮脑O(shè)計(jì)語(yǔ)言。C++是C語(yǔ)言的一個(gè)超集,它既支持傳統(tǒng)的面向過(guò)程程序設(shè)計(jì),又支持面向?qū)ο蟪绦蛟O(shè)計(jì),C++與C語(yǔ)言的這種兼容性是其成功的一個(gè)重要方面。CBuilder開發(fā)環(huán)境C++由RichMaseitti提出,它的創(chuàng)造靈感來(lái)源于當(dāng)時(shí)計(jì)算機(jī)語(yǔ)言多方面成果的凝集,特別是BCPL和Simula67。C++的標(biāo)準(zhǔn)化工作于1989年已開始,在支持面向?qū)ο筇匦缘拈_發(fā)平臺(tái)上,日趨進(jìn)步和完善。CBuilder開發(fā)環(huán)境1.2.2C++語(yǔ)言對(duì)C語(yǔ)言在非面向?qū)ο蠓矫娴脑鰪?qiáng) C++作為一種混合語(yǔ)言,在面向?qū)ο蠹胺敲嫦驅(qū)ο筮@兩個(gè)方面都對(duì)C語(yǔ)言進(jìn)行了擴(kuò)充或修訂,使得它既適用于結(jié)構(gòu)化程序設(shè)計(jì),又能滿足面向?qū)ο蟪绦蛟O(shè)計(jì)的要求。因而很快流行起來(lái),成為當(dāng)今面向?qū)ο蟪绦蛟O(shè)計(jì)的主要語(yǔ)言。以下是C++對(duì)C語(yǔ)言在非面向?qū)ο蠓矫娴娜舾芍匾獢U(kuò)充。CBuilder開發(fā)環(huán)境1.C++提供了單行注釋方式在傳統(tǒng)的C語(yǔ)言中C提供了塊注釋方式,其形式如下:/*explanationsentence*/而在C++中,除了保留了塊注釋方式外,還增加了一種更為方便的單行注釋方式,其形式如下://explanationsentenceCBuilder開發(fā)環(huán)境2.更為靈活的變量說(shuō)明在傳統(tǒng)的C語(yǔ)言中,局部變量的說(shuō)明必須放在可執(zhí)行的代碼的前面。數(shù)據(jù)說(shuō)明語(yǔ)句和可執(zhí)行語(yǔ)句的混合將引起編譯錯(cuò)誤。而在C++中,可以在程序代碼塊的任何地方進(jìn)行局部變量的說(shuō)明。CBuilder開發(fā)環(huán)境3.結(jié)構(gòu)、聯(lián)合和枚舉名可以直接作為類型名使用在C語(yǔ)言中,對(duì)結(jié)構(gòu)、聯(lián)合和枚舉類型進(jìn)行定義后,要生成該結(jié)構(gòu)、聯(lián)合和枚舉類型的變量,必須在結(jié)構(gòu)名前加上struct。如對(duì)BankAccount結(jié)構(gòu)的變量進(jìn)行說(shuō)明時(shí)使用如下形式:BtructBankAccounta;在C++中,說(shuō)明方法可簡(jiǎn)化為:BankAccounta;//關(guān)鍵字struct不必要CBuilder開發(fā)環(huán)境4.枚舉類型與整型的關(guān)系在C語(yǔ)言中,枚舉值與整型值之間可以相互轉(zhuǎn)換使用。而C++的類型檢查則比C要嚴(yán)格,枚舉值將被自動(dòng)轉(zhuǎn)化為整型值使用,但將整型值轉(zhuǎn)化為枚舉值則需要強(qiáng)制類型轉(zhuǎn)換,否則會(huì)出現(xiàn)編譯錯(cuò)誤。如下面的一段代碼,在C語(yǔ)言中都是可以接受的,但某些語(yǔ)句在C++中則會(huì)引起錯(cuò)誤。CBuilder開發(fā)環(huán)境enumname{John,Mike,Rose,Joan};enumnameperson1=John;//正確enumnameperson2=person1;//正確enumnameperson3=1;//在C++中錯(cuò)誤enumnameperson4=(enumname)1;//在C++中正確無(wú)名聯(lián)合可以通過(guò)使用其中數(shù)據(jù)項(xiàng)的名字直接進(jìn)行訪問(wèn)。CBuilder開發(fā)環(huán)境5.作用域限定運(yùn)算符::作用域限定運(yùn)算符::用于對(duì)當(dāng)前作用域之外的同名變量進(jìn)行訪問(wèn)。如在下面的例子中,我們?cè)诰植孔兞縱ar的作用域內(nèi)使用::var來(lái)實(shí)現(xiàn)對(duì)全局變量var的訪問(wèn)。CBuilder開發(fā)環(huán)境#include<iostream.h>intvar;voidmain(){floatvar;var=3.14;::var=6;cout<<"localvariablevar="<<var<<endl;cout<<"globalvariablevar="<<::var<<endl;}CBuilder開發(fā)環(huán)境該程序的輸出結(jié)果如下:localvariablevar=3.14globalvariablevar=6CBuilder開發(fā)環(huán)境6.增強(qiáng)了類型轉(zhuǎn)換方式在C++中,除了保留了傳統(tǒng)的C語(yǔ)言的強(qiáng)制類型轉(zhuǎn)換方式之外,還可以將類型名作為函數(shù)名使用,這將大大提高程序的可讀性。例如:floatf=0.01;longl=(long)f;longk=long(f);CBuilder開發(fā)環(huán)境8.關(guān)鍵字const在C++中,關(guān)鍵字const用于將一個(gè)標(biāo)識(shí)符說(shuō)明為常量,即其值是在程序的運(yùn)行過(guò)程中不變的量,程序不能以任何方式對(duì)其進(jìn)行修改。const與C語(yǔ)言中的#define是有區(qū)別的:const所說(shuō)明的常量是有內(nèi)存單元與之對(duì)應(yīng)的量,在程序編譯時(shí)其值還不能確定;而#define所說(shuō)明的常量是在編譯時(shí)便能確定其數(shù)值的量。CBuilder開發(fā)環(huán)境關(guān)鍵字const也可以用來(lái)修飾函數(shù)參數(shù)中的某些變量,用以保證被修飾的參數(shù)對(duì)應(yīng)的實(shí)參在該函數(shù)內(nèi)部不被改動(dòng)。當(dāng)關(guān)鍵字const用來(lái)修飾指針時(shí),根據(jù)使用的形式不同,它可以凍結(jié)指針?biāo)赶虻淖兞?、凍結(jié)指針本身或同時(shí)凍結(jié)指針及其所指向的變量,如下所示:constchar*name="Mike";//凍結(jié)指針?biāo)赶虻淖兞縞har*constname="Mike";//凍結(jié)指針本身constchar*constname="Mike";//同時(shí)凍結(jié)指針及其所指向的變量CBuilder開發(fā)環(huán)境9.new和deleteC++為了提高內(nèi)存管理上的靈活性,提供了動(dòng)態(tài)內(nèi)存分配和釋放的操作符new和delete,用來(lái)增強(qiáng)C語(yǔ)言中原有的函數(shù)malloc()和free()。new操作符用來(lái)動(dòng)態(tài)分配內(nèi)存,new操作符的使用格式可以參考如下代碼:char*mybuffer=newchar[4096];CBuilder開發(fā)環(huán)境對(duì)于較大的數(shù)組,動(dòng)態(tài)分配可以節(jié)省大量的堆??臻g。值得注意的是,數(shù)組在單獨(dú)使用時(shí)是指向該數(shù)組在內(nèi)存中的起始位置的,而指針也是指向同一個(gè)位置的,所以兩者可以互換。在程序中new和delete是成對(duì)出現(xiàn)的,如果沒(méi)有釋放new操作符分配的內(nèi)存,則程序?qū)⒁恢闭加么罅康膬?nèi)存。不過(guò)值得注意的是,不要對(duì)已經(jīng)釋放的指針再次使用delete(),因?yàn)樗鼘?dǎo)致無(wú)法預(yù)料的結(jié)果。CBuilder開發(fā)環(huán)境new和delete在C++中除了能用于對(duì)C中原有類型的變量動(dòng)態(tài)分配和釋放內(nèi)存外,主要用于對(duì)C++中動(dòng)態(tài)生成的對(duì)象分配和釋放內(nèi)存。當(dāng)使用new動(dòng)態(tài)生成對(duì)象時(shí),new操作符返回一個(gè)指向?qū)ο笤趦?nèi)存中所在位置的指針,對(duì)對(duì)象的任何操作都要用到這個(gè)指針。與其它未初始化的變量一樣,未初始化的指針的值是隨機(jī)的,如果使用未初始化的指針,將導(dǎo)致嚴(yán)重的后果。因此在一般情況下,應(yīng)該在聲明指針后立即對(duì)其進(jìn)行初始化。例如:TEdit*Edit1=newTEdit(this);Edit1->Width=100;Edit1->Height=10;CBuilder開發(fā)環(huán)境10.內(nèi)聯(lián)函數(shù)(inline)C++提供了內(nèi)聯(lián)函數(shù)。使用內(nèi)聯(lián)函數(shù)可以節(jié)約函數(shù)調(diào)用時(shí)保留現(xiàn)場(chǎng)所需的系統(tǒng)開銷,提高程序執(zhí)行效率。同時(shí),由于內(nèi)聯(lián)函數(shù)的使用將增大程序的代碼段,因此建議在充分權(quán)衡系統(tǒng)開銷和程序代碼段長(zhǎng)度的關(guān)系后謹(jǐn)慎使用。CBuilder開發(fā)環(huán)境11.缺省函數(shù)參數(shù)在C++的函數(shù)調(diào)用時(shí),可以缺省函數(shù)的參數(shù)。但是要使用缺省函數(shù)參數(shù),必須在函數(shù)定義時(shí)為該參數(shù)賦一缺省值,且所缺省參數(shù)的順序只能是從右到左,不能隨意缺省。請(qǐng)看下面的例子:CBuilder開發(fā)環(huán)境intfunction(inta=0;intb=1;intc=2){ }以下函數(shù)調(diào)用都是合法的:function(); //等同于function(0,1,2)function(12); //等同于function(12,1,2)function(12,13); //等同于function(12,13,2)function(12,13,14);而以下函數(shù)調(diào)用則是非法的:function(,13,14);function(12,,14);CBuilder開發(fā)環(huán)境12.函數(shù)返回值在C++中,任何說(shuō)明為非void類型的函數(shù)都需要指定一個(gè)相應(yīng)類型的返回值,否則在函數(shù)的編譯時(shí)會(huì)產(chǎn)生警告錯(cuò)誤。CBuilder開發(fā)環(huán)境1.2.3C++對(duì)于面向?qū)ο蠹夹g(shù)的支持 類和對(duì)象是面向?qū)ο蠹夹g(shù)的基石,因此,我們首先要解決的問(wèn)題是如何用C++語(yǔ)言來(lái)描述類和對(duì)象。讓我們回憶一下C語(yǔ)言中的結(jié)構(gòu)體這種復(fù)合數(shù)據(jù)類型,結(jié)構(gòu)可把相關(guān)聯(lián)的數(shù)據(jù)元素組合成一個(gè)統(tǒng)一體,它和類非常相似,其區(qū)別主要在于C的結(jié)構(gòu)不含成員函數(shù),而C++的類既能包含數(shù)據(jù)元素(即數(shù)據(jù)成員),又能包含方法(即成員函數(shù))。下面用C++定義了BankAccount(銀行帳號(hào))類,該類包含有兩個(gè)數(shù)據(jù)成員和兩個(gè)成員函數(shù):CBuilder開發(fā)環(huán)境classBankAccount{private: floatbalance; unsignedaccountNumber;public: voiddeposit(floatamount) { balance+=amout; }

CBuilder開發(fā)環(huán)境voidwithdraw(floatamout) { balance-=amout;}floatgetbalance() {returnbalance; }};CBuilder開發(fā)環(huán)境可以看出C++中定義類的語(yǔ)句確實(shí)同定義結(jié)構(gòu)非常相像。我們使用了關(guān)鍵字class表示類,這里BankAccount是類名,在一對(duì)大括號(hào)中羅列了所有的數(shù)據(jù)成員和方法函數(shù)。關(guān)鍵字“private:”和“public:”分別用于說(shuō)明私有成員和公有成員,前者只允許在屬于該類對(duì)象的方法內(nèi)進(jìn)行訪問(wèn),后者則可被外部對(duì)象的方法訪問(wèn)。CBuilder開發(fā)環(huán)境給BankAccount類生成靜態(tài)對(duì)象實(shí)例的語(yǔ)句可以是:BankAccountBA1,BA2;為了動(dòng)態(tài)生成對(duì)象實(shí)例,我們必須使用指針和new操作符:BankAccount*BA3;BA3=newBankAccount;如果詳細(xì)介紹C++面向?qū)ο蠹夹g(shù),可能需要半本書的篇幅,而且比較枯燥,對(duì)于學(xué)習(xí)本書的“基礎(chǔ)篇”和“應(yīng)用篇”,我們暫時(shí)只需要以上介紹的這些知識(shí)就可以了。在本書的“提高篇”將更深入地介紹C++和面向?qū)ο蟮膬?nèi)容。CBuilder開發(fā)環(huán)境1.2.4VCL組件類 前面曾提及BCB開發(fā)環(huán)境為用戶提供的類庫(kù)被稱為VCL(VisualComponentLibrary),該類庫(kù)非常適用于Windows下的快速開發(fā)。在VCL中首先定義了一個(gè)基類TObject,其它的類都是TObject的后代。所有的組件都是TComponent類的派生類,它們都能放在BCB的組件面板上供取用。組件中有一部分繼承自TControl類的又常被稱為控件,它們是可視的,有著大體相似的屬性和方法。CBuilder開發(fā)環(huán)境TForm類也稱為窗體類,它是應(yīng)用程序的窗口。通常,在BCB的一個(gè)空白程序框架中,已存在著一個(gè)由系統(tǒng)生成的空窗體Form1。由于C++中對(duì)象的數(shù)據(jù)成員的類型也可以是類,因此對(duì)象中可以含有成員子對(duì)象。主要用于包容成員對(duì)象的那種對(duì)象通常被稱為“容器”。窗體中可以放入各種組件,因此,窗體也常被當(dāng)成是容器。CBuilder開發(fā)環(huán)境屬性和事件概念是BCB對(duì)C++類的某種擴(kuò)展和深化,為此BCB中引入了擴(kuò)展關(guān)鍵字__property。屬性是類中一種特殊的數(shù)據(jù)成員,對(duì)該成員的讀寫常伴隨著一系列與WindowsAPI調(diào)用有關(guān)的組件狀態(tài)的改變。事件則是一種觸發(fā)器,它通常與某種特定狀態(tài)(如接收到某個(gè)Windows消息)相聯(lián)系。用戶可以為事件編寫代碼,該代碼只在上述的某種特定狀態(tài)發(fā)生時(shí)被執(zhí)行。在1.1.4節(jié)的例子中,我們寫代碼Form1->Caption="Hello,World!",其中Caption即為類TForm的屬性。雙擊按鈕時(shí)出現(xiàn)的空白代碼框架:CBuilder開發(fā)環(huán)境void__fastcallTForm1::Button1Click(TObject*Sender){}即為Button1對(duì)象的OnClick事件的代碼框架。在BCB下編程,所要做的工作大部分都與VCL對(duì)象的屬性與事件有關(guān)。由于VCL中有大量的組件,必須循序漸進(jìn)地學(xué)習(xí)它們的用法。如果讀者能熟練使用多種VCL組件的屬性與事件,就能成為一個(gè)Windows下的編程高手。CBuilder開發(fā)環(huán)境1.2.5BCB的字符串類型傳統(tǒng)的C語(yǔ)言中沒(méi)有真正的字符串類型,只有字符數(shù)組或指針,因此使用中常帶來(lái)不便。BCB采納了AnsiC++中的AnsiString類,彌補(bǔ)了C的不足。此外,BCB中定義的TStrings等類型也非常有用。下面簡(jiǎn)單介紹這些類型的用法。CBuilder開發(fā)環(huán)境1.AnsiString類AnsiString類除了將一個(gè)長(zhǎng)字符串作為它的數(shù)據(jù)成員外還提供了操縱字符串的方法,并且能方便地與C的字符類型相轉(zhuǎn)換。大部分編程語(yǔ)言都允許使用“+”號(hào)連接兩個(gè)字符串,但在C中卻不行,這會(huì)帶來(lái)許多不便,好在AnsiString解決了這個(gè)問(wèn)題。例如:CBuilder開發(fā)環(huán)境AnsiStrings1,s2,s3;s1="abc";s2="efg";s3=s1+'d'+s2;是完全符合C++語(yǔ)法的。由于AnsiString的強(qiáng)大功能和具有與其它編程語(yǔ)言的兼容性,使得它在VCL類的屬性和方法參數(shù)中被大量使用。CBuilder開發(fā)環(huán)境AnsiString類提供了如下主要的方法函數(shù):●Length返回AnsiString中的字符數(shù)?!馡sEmpty如果AnsiString為空,則返回true,否則返回false?!馭ubString返回該AnsiString的子串?!馽_str將AnsiString轉(zhuǎn)化為基本C語(yǔ)言的*char型。因?yàn)檎{(diào)用C或C++的函數(shù)時(shí),參數(shù)的數(shù)據(jù)類型常常要求是char*,所以可使用該函數(shù)先將AnsiString轉(zhuǎn)換為char*型,再進(jìn)行調(diào)用。CBuilder開發(fā)環(huán)境注意:AnsiString::c_str()返回一個(gè)指向AnsiString對(duì)象內(nèi)部字符串緩沖的指針,一旦使用該調(diào)用語(yǔ)句結(jié)束,這個(gè)指針也就不再有效?!馻toi將數(shù)值型字符串轉(zhuǎn)換為整數(shù)?!駃toa將整數(shù)轉(zhuǎn)化為字符串?!馎nsiCompare將該字符串與指定的字符串比較,比較時(shí)區(qū)分大小寫。CBuilder開發(fā)環(huán)境2.TStrings類TSrings是另一個(gè)在VCL中被廣泛使用的字符串類型,它可以將一段由若干行組成的文本保存在一個(gè)長(zhǎng)字符串中。使用TStrings的方法可根據(jù)實(shí)際需要方便地在這一段文本中插入或刪除行,或?qū)⑵滢D(zhuǎn)換為其它字符串類型。VCL中TListBox類組件的Items屬性和TMemo類組件的Lines屬性都是TStrings類型的。3.TWideString類TWideString類是用于與WindowsOLE和非英文字符集等相兼容的字符串類型。CBuilder開發(fā)環(huán)境1.2.6BCB的通用函數(shù)BCB編程環(huán)境下提供了一組通用函數(shù),這些函數(shù)主要提供在各種基本數(shù)據(jù)類型之間進(jìn)行轉(zhuǎn)換、磁盤文件操作、字符串操作等功能,它們的使用都是比較簡(jiǎn)單的。下面介紹其中最常用的若干函數(shù)。1.IntToStr函數(shù)IntToStr函數(shù)原型為AnsiString__fastcallIntToStr(intValue);功能是將整型變量轉(zhuǎn)換為字符串。CBuilder開發(fā)環(huán)境2.StrToInt函數(shù)StrToInt函數(shù)原型為int__fastcallStrToInt(constAnsiStringS);功能是將字符串轉(zhuǎn)換為整型變量。3.FloatToStr函數(shù)FloatToStr函數(shù)原型為AnsiString__fastcallFloatToStr(floatValue);功能是將實(shí)數(shù)型變量轉(zhuǎn)換為字符串。CBuilder開發(fā)環(huán)境4.StrToFloat函數(shù)StrToFloat函數(shù)原型為float__fastcallStrToFloat(constAnsiStringS);功能是將字符串轉(zhuǎn)換為實(shí)數(shù)型變量。CBuilder開發(fā)環(huán)境5.FloatToStrF函數(shù)FloatToStrF函數(shù)原型為AnsiString__fastcallFloatToStrF(longdoublevalue,TStringFloatFormatformat,intprecision,intdigits);功能是將實(shí)數(shù)型變量轉(zhuǎn)換為指定格式的字符串。整型參數(shù)precision和digits分別指定小數(shù)部分的位數(shù)和字符串的長(zhǎng)度。參數(shù)format可取值為sffGeneral、sffExponent、sffFixed、sffNumber以及sffCurrency。CBuilder開發(fā)環(huán)境6.TimeToStr函數(shù)TimeToStr函數(shù)原型為AnsiString__fastcallTimeToStr(System::TDateTimeTime);功能是將當(dāng)前日期和時(shí)間轉(zhuǎn)換為字符串對(duì)象。7.UpperCase函數(shù)UpperCase函數(shù)原型為AnsiString__fastcallUpperCase(constAnsiStringS);功能是將指定的AnsiString字符串轉(zhuǎn)換為大寫形式。CBuilder開發(fā)環(huán)境8.LowerCase函數(shù)LowerCase函數(shù)原型為AnsiString__fastcallLowerCase(constAnsiStringS);功能是將指定的AnsiString字符串轉(zhuǎn)換為小寫形式。9.IntToHex函數(shù)IntToHex函數(shù)原型為AnsiString__fastcallIntToHex(intValue,intDigits);功能是將整數(shù)轉(zhuǎn)換為十六進(jìn)制字符串。CBuilder開發(fā)環(huán)境10.FileExists函數(shù)FileExists函數(shù)原型為bool__fastcallFileExists(constSystem::AnsiStringFileName);功能是測(cè)試指定的文件是否存在,如果存在,則返回true,否則返回false。CBuilder開發(fā)環(huán)境11.DeleteFile函數(shù)DeleteFile函數(shù)原型為bool__fastcallDeleteFile(constAnsiStringFileName);功能是刪除指定的磁盤文件,如果操作成功,則返回true,否則返回false。CBuilder開發(fā)環(huán)境12.CreateDir函數(shù)CreateDir函數(shù)原型為bool__fastcallCreateDir(constAnsiStringDir);功能是創(chuàng)建一個(gè)新的目錄,如果操作成功,則返回true,否則返回false。13.DiskSize函數(shù)DiskSize函數(shù)原型為int__fastcallDiskSize(ByteDrive);功能是返回指定磁盤的空間,操作失敗時(shí)返回-1。參數(shù)Drive取值為“0”,代表當(dāng)前盤,取值為1,2,3,...時(shí)分別代表A,B,C,...盤。CBuilder開發(fā)環(huán)境14.DiskFree函數(shù)DiskFree函數(shù)原型為int__fastcallDiskFree(ByteDrive);功能是返回指定磁盤的剩余空間,操作失敗時(shí)返回-1。參數(shù)Drive的用法與DiskSize函數(shù)中的用法相同。15.StrScan函數(shù)StrScan函數(shù)原型為char*__fastcallStrScan(constchar*Str,charChr);功能是在指定的字符串中尋找特定的字符,并返回指向該特定字符在字符串中第一次出現(xiàn)位置的字符指針。若找不到該特定字符,則返回NULL。CBuilder開發(fā)環(huán)境16.StrRScan函數(shù)StrRScan函數(shù)原型為char*__fastcallStrRScan(constchar*Str,charChr);功能與StrScan類似,但返回值是指向最后一次出現(xiàn)該特定字符處的指針。CBuilder開發(fā)環(huán)境1.3C++Builder集成開發(fā)環(huán)境本章介紹C++Builder6.0應(yīng)用程序集成開發(fā)環(huán)境(IDE)的各個(gè)組成部分及相關(guān)的操作。CBuilder開發(fā)環(huán)境啟動(dòng)BCB,進(jìn)入IDE,如圖1-7所示,我們將該環(huán)境分解為四個(gè)窗口和六個(gè)組成部分。這四個(gè)窗口是:程序主窗口、對(duì)象監(jiān)視器、應(yīng)用程序窗體設(shè)計(jì)區(qū)和代碼編輯器。其中,前兩個(gè)窗口分別位于IDE的上方和左方,后兩個(gè)窗口都位于IDE的右下方,其中應(yīng)用程序窗體設(shè)計(jì)區(qū)疊在代碼編輯器之上。主窗口的標(biāo)題是“C++Builder6”,它可被進(jìn)一步分解為主菜單、工具欄、組件面板三個(gè)部分。這三個(gè)部分加上另外三個(gè)窗口就是BCBIDE的六個(gè)主要組成部分。CBuilder開發(fā)環(huán)境圖1-7BCBIDE的各個(gè)組成部分CBuilder開發(fā)環(huán)境1.3.1程序主窗口1.主菜單在BCBIDE主窗口頂部是主菜單,它由File、Edit、Search、View、Project、Run、Component、Database、Tools、Windows、Help等項(xiàng)及相應(yīng)的下拉菜單組成。IDE的大部分功能都可由該菜單系統(tǒng)提供。1)File下拉菜單File下拉菜單由New、Open、OpenProject、Reopen、Save、SaveAs、SaveAll、Close、CloseAll、IncludeUnithdr、Print、Exit等選項(xiàng)組成。CBuilder開發(fā)環(huán)境選擇New時(shí)會(huì)彈出下拉菜單,從中可選擇所需創(chuàng)建的對(duì)象或文件類型,其中,NewApplication用于創(chuàng)建一個(gè)新的項(xiàng)目,即一個(gè)空白的應(yīng)用程序框架,NewForm則用于將一個(gè)空白窗體添加到當(dāng)前打開的項(xiàng)目中。Open、OpenProject、Reopen用于打開項(xiàng)目或文件。選用Open和OpenProject時(shí)都會(huì)出現(xiàn)打開文件對(duì)話框,用戶可在對(duì)話框內(nèi)選擇存放文件的路徑以及文件類型,按“打開”按鈕即完成。一般常用OpenProject打開項(xiàng)目,此時(shí),與該項(xiàng)目有關(guān)的主要文件都已被打開。Reopen提供最近打開過(guò)的文件列表供選擇打開。CBuilder開發(fā)環(huán)境As為另存,指將當(dāng)前文件以另一路徑或不同的文件名保存;SaveAll則保存當(dāng)前項(xiàng)目下的所有文件。建議初學(xué)者多使用SaveAll。Close、CloseAll用于關(guān)閉文件,前者只關(guān)閉當(dāng)前正在操作的文件,后者關(guān)閉當(dāng)前項(xiàng)目下的所有文件。用IncludeUnithdr可使當(dāng)前編輯的源文件中包含另一個(gè)源文件,一般被包含的是C++的頭文件(擴(kuò)展名.h)。此項(xiàng)操作等同于在源程序中加入#include<源文件名>語(yǔ)句。用Exit可退出BCBIDE,返回到Windows。若文件尚未關(guān)閉時(shí)選Exit,則IDE會(huì)給出提示信息。CBuilder開發(fā)環(huán)境2)Edit下拉菜單Edit下拉菜單由Undo、Redo、Cut、Copy、Paste、Undelete、Delete、SeleteAll、Align、BringtoFront、SendtoBack、TabOrder等選項(xiàng)組成。Undo和Redo用于在代碼編輯器窗口中進(jìn)行文本編輯時(shí)取消和恢復(fù)前一次的操作,它們一般不能用于對(duì)窗體中控件的編輯。CBuilder開發(fā)環(huán)境Align、BringtoFront、SendtoBack、TabOrder用于控件的編輯。其中,Align用于排列(對(duì)齊)控件,在進(jìn)行排列之前應(yīng)先選中一組需要排列的控件(按住Shift鍵不放,并用鼠標(biāo)逐個(gè)點(diǎn)擊控件就能選中一組控件);BringtoFront和SendtoBack用于處理窗體中若干控件相互重疊的情況,BringtoFront將選中的控件置前,SendtoBack將選中的控件置后;TabOrder用于調(diào)整窗體中一組控件在程序運(yùn)行時(shí)發(fā)生焦點(diǎn)(光標(biāo))轉(zhuǎn)移的先后順序。CBuilder開發(fā)環(huán)境Cut、Copy、Paste、Delete、Undelete在文本編輯和控件操作兩種情況下都能起作用,分別表示對(duì)文本或控件進(jìn)行剪切、復(fù)制、粘貼、刪除和取消刪除操作。其中,Cut和Delete操作前必須先選中文本或控件,進(jìn)行Paste操作時(shí)必須確保剪貼板上有相應(yīng)的內(nèi)容存在。CBuilder開發(fā)環(huán)境3)Search下拉菜單Search下拉菜單由Find、SearchAgain、Replace、GoToLineNumber等選項(xiàng)組成。Find和SearchAgain用于在文本中搜索特定字符串,前者用于首次搜索,后者用于對(duì)同一字符串的再次搜索。Replace則在搜索基礎(chǔ)上進(jìn)行替換。選擇Find或Replace都會(huì)出現(xiàn)對(duì)話框,使用時(shí)應(yīng)注意對(duì)話框各選項(xiàng)的正確使用方法。這些選項(xiàng)中,Casesensitive表示搜索時(shí)對(duì)字母區(qū)分大小寫,F(xiàn)orward和Backward分別表示搜索方向?yàn)橄蚯昂拖蚝?,Global和Selectedtext分別表示在全文范圍內(nèi)和當(dāng)前選中文本范圍內(nèi)搜索。CBuilder開發(fā)環(huán)境GoToLineNumber可搜索到文本的某一行。使用時(shí)彈出對(duì)話框,輸入一個(gè)行號(hào)后即可執(zhí)行。CBuilder開發(fā)環(huán)境4)View下拉菜單View下拉菜單由ObjectInspector、AlignmentPalette、WindowList、DebugWindows、ToggleForm/Unit、Toolbars等選項(xiàng)組成,主要功能為控制IDE的外觀和在各個(gè)窗口間的切換。ObjectInspector激活對(duì)象監(jiān)視窗口;DebugWindows打開Debug(糾錯(cuò))窗口;WindowList提供包含了當(dāng)前環(huán)境中已打開的全部窗口的一個(gè)列表,選中其中一個(gè)窗口的名稱,按一下“OK”按鈕就能使該窗口激活并顯示。CBuilder開發(fā)環(huán)境AlignmentPalette與Edit菜單下的Align項(xiàng)功能相似,但不能通過(guò)對(duì)話框進(jìn)行操作,而是提供一個(gè)圖形化的工具面板用于排列控件。Toolbars可設(shè)置工具條,使某些工具按鈕顯示或關(guān)閉。ToggleForm/Unit可將當(dāng)前正在操作的某個(gè)窗體快速切換到代碼編輯器中與該窗體相關(guān)的單元文件,或反過(guò)來(lái)從當(dāng)前單元文件切換到窗體。CBuilder開發(fā)環(huán)境5)Project下拉菜單Project下拉菜單由AddtoProject、RemovefromProject、ViewSource、CompileUnit、BuildProject1、Options等選項(xiàng)組成。AddtoProject可將現(xiàn)存的某個(gè)單元文件或其它對(duì)象添加到當(dāng)前項(xiàng)目;RemovefromProject則從當(dāng)前項(xiàng)目中刪除某一文件或窗體等對(duì)象,操作時(shí)都有對(duì)話框出現(xiàn)。使用該兩項(xiàng)功能時(shí),BCB會(huì)對(duì)項(xiàng)目及相關(guān)代碼進(jìn)行必要的分析和修改。CBuilder開發(fā)環(huán)境Options設(shè)置與項(xiàng)目有關(guān)的選項(xiàng)??蛇x擇的選項(xiàng)很多,但大部分都非常專業(yè),初學(xué)者一般不應(yīng)隨意改變這些選項(xiàng)的值。CompileUnit編譯當(dāng)前代碼文件,BuildProject1則編譯整個(gè)項(xiàng)目。ViewSource可打開項(xiàng)目的主程序單元的代碼進(jìn)行編輯,一般情況下不必編輯修改該代碼。CBuilder開發(fā)環(huán)境6)Run下拉菜單Run下拉菜單由Run、Parameters、StepOver、TraceInto、RuntoCursor、ProgramReset、ProgramPause、AddWatch、AddBreakpoint等選項(xiàng)組成。這些菜單項(xiàng)主要用于應(yīng)用程序運(yùn)行及調(diào)試。Run菜單項(xiàng)編譯、鏈接并且運(yùn)行應(yīng)用程序。若選擇Parameters,可指定程序運(yùn)行時(shí)的命令行參數(shù)。StepOver和TraceInto都是逐句執(zhí)行程序,但前者對(duì)函數(shù)調(diào)用語(yǔ)句視作整體一次執(zhí)行,而后者則會(huì)跟蹤到函數(shù)內(nèi)部逐句執(zhí)行。在提高篇的第8章,我們將較詳細(xì)介紹這些菜單命令是如何用于程序調(diào)試的。CBuilder開發(fā)環(huán)境7)Component下拉菜單Component下拉菜單由NewComponent、InstallComponent、ImportActiveXControl、ConfigurePalette等選項(xiàng)組成,用于創(chuàng)建、安裝自定義控件及配置控件面板。CBuilder開發(fā)環(huán)境8)Database下拉菜單Database下拉菜單由Explore、SQLMonitor、FormWizard等選項(xiàng)組成,主要用于對(duì)數(shù)據(jù)庫(kù)編程的支持。選擇Explore,則彈出“SQLExplore”窗口,該窗口用于數(shù)據(jù)庫(kù)系統(tǒng)的SQL設(shè)計(jì)。選擇SQLMonitor,則彈出“SQLMonitor”窗口,該窗口用作SQL操作的監(jiān)視器。選擇FormWizard,則出現(xiàn)一個(gè)數(shù)據(jù)庫(kù)窗體設(shè)計(jì)向?qū)?,按照屏幕提示,可以很方便地設(shè)計(jì)一個(gè)對(duì)簡(jiǎn)單數(shù)據(jù)庫(kù)作常規(guī)操作的窗體。CBuilder開發(fā)環(huán)境9)Tools下拉菜單Tools下拉菜單由EnvironmentOptions、EditorOptions、ConfigureTools、DatabaseDesktop、ImageEditor等選項(xiàng)組成,用于環(huán)境設(shè)置并提供一些軟件工具。EnvironmentOptions和EditorOptions分別對(duì)IDE和代碼編輯器進(jìn)行設(shè)置。這些設(shè)置的可選項(xiàng)目很多,其中有一些非常實(shí)用。例如,我們可在EnvironmentOptions對(duì)話窗口中發(fā)現(xiàn)“Preferences”頁(yè)的“Formdesigner”框內(nèi)有一項(xiàng)“Snaptogrid”。當(dāng)該項(xiàng)選中時(shí),若在窗體上用鼠標(biāo)移動(dòng)控件,控件只能定位在格點(diǎn)(Grid)上,該項(xiàng)未選中時(shí),無(wú)此限制。此外,還可輸入“GridsizeX”和“GridsizeY”以改變格點(diǎn)的間距等。CBuilder開發(fā)環(huán)境ConfigureTools可對(duì)位于IDE左上方的工具條進(jìn)行配置。DatabaseDesktop、ImageEditor都是BCB提供的實(shí)用工具。DatabaseDesktop相當(dāng)于是一個(gè)小型的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS),主要用于處理Paradox類型的本地?cái)?shù)據(jù),我們將在“應(yīng)用篇”的第5章作較詳細(xì)的介紹。ImageEditor工具用于對(duì)簡(jiǎn)單的位圖圖像進(jìn)行編輯。CBuilder開發(fā)環(huán)境10)Window下拉菜單Windows下拉菜單中各項(xiàng)命令可用于在BCBIDE中的各個(gè)窗口之間切換。11)Help下拉菜單Help下拉菜單中各項(xiàng)為用戶提供幫助。本章1.3.5節(jié)將介紹BCB的幫助系統(tǒng)。CBuilder開發(fā)環(huán)境2.工具欄BCBIDE的工具欄位于主菜單的左下方,上面排列著若干個(gè)圖標(biāo)。它們分別與主菜單上的某些常用選項(xiàng)相對(duì)應(yīng),點(diǎn)擊這些圖標(biāo)能更快捷地執(zhí)行相應(yīng)的菜單命令。每個(gè)圖標(biāo)都有自己的名稱,只要將鼠標(biāo)箭頭在圖標(biāo)上停留一點(diǎn)時(shí)間,IDE就會(huì)提示該圖標(biāo)的名稱。如圖1-8所示,上排從左往右依次為New、Open、Save、SaveAll、OpenProject、AddfiletoProject、RemovefilefromProject、Help圖標(biāo);下排從左往右依次為ViewUnit、ViewForm、ToggleForm/Unit、NewForm、Run、Pause、Traceinto、StepOver圖標(biāo)。工具欄是可以通過(guò)設(shè)置進(jìn)行改變的,所以上述的排列不是固定不變的。CBuilder開發(fā)環(huán)境圖1-8BCB的工具欄CBuilder開發(fā)環(huán)境3.組件面板在本章1.1.4節(jié)中的“Hello,World!”范例中,我們從組件面板上選擇一個(gè)按鈕并將它放到應(yīng)用程序主窗體內(nèi),這種“所見即所得”的操作方式使程序的界面設(shè)計(jì)變得輕松隨意。C++Builder和它的姐妹產(chǎn)品Delphi有一個(gè)明顯的優(yōu)點(diǎn)就是可供選用的組件特別多。這些組件被分門別類地排列在組件面板上,使用起來(lái)非常方便。組件面板位于BCB主窗口的右下方,它由若干個(gè)頁(yè)面組成。點(diǎn)擊頁(yè)標(biāo)簽,可切換當(dāng)前頁(yè)。點(diǎn)擊位于面板右端的兩個(gè)小箭頭,可橫向滾動(dòng)頁(yè)標(biāo)簽,使所有的頁(yè)能顯示。CBuilder開發(fā)環(huán)境每個(gè)組件都有自己的名稱,只要將鼠標(biāo)箭頭在組件圖標(biāo)上停留一點(diǎn)時(shí)間,IDE就會(huì)提示該組件的名稱。在BCB中控件是指具有某些Windows窗口特性的可視組件,或者用更專業(yè)一點(diǎn)的說(shuō)法就是屬于由TControl派生的類。由于大部分最常用的組件都是控件,因此有時(shí)也將組件面板稱為控件面板,有些書上甚至將兩者混為一談。

CBuilder開發(fā)環(huán)境不同版本BCB的組件面板的頁(yè)數(shù)和每頁(yè)上的組件是有差別的,但差別不是很大。BCB支持用戶創(chuàng)建自己的組件并把它安裝到面板上,此外它也允許用戶改變組件在面板上的排列。因此,即使對(duì)同一版本的BCB,不同用戶組件面板的內(nèi)容也不盡相同。本節(jié)中介紹的是BCB6.0標(biāo)準(zhǔn)安裝下的組件面板。CBuilder開發(fā)環(huán)境下面簡(jiǎn)單介紹組件面板上常用的各個(gè)頁(yè),對(duì)其中各個(gè)組件的具體用法將在后續(xù)章節(jié)中結(jié)合編程技術(shù)進(jìn)行介紹。1)Standard頁(yè)Standard頁(yè)上有16個(gè)組件,常用的有:主菜單(MainMenu)、標(biāo)簽(Label)、文本編輯框(Edit)、備注框(Memo)、按鈕(Button)、復(fù)選框(CheckBox)、列表框(ListBox)、組合框(ComboBox)、滾動(dòng)條(ScrollBar)、單選按鈕組(RadioGroup)和面板(Panel)等,如圖1-9所示。這些組件主要用于創(chuàng)建應(yīng)用程序界面和各種對(duì)話框。CBuilder開發(fā)環(huán)境圖1-9Standard頁(yè)上的組件CBuilder開發(fā)環(huán)境2)Additional頁(yè)Additional頁(yè)上有22個(gè)組件,常用的有:快速按鈕(SpeedButton)、掩碼編輯框(MaskEdit)、圖像(Image)、圖形(Shape)和圖表(Chart)等,如圖1-10所示。這些組件用于程序界面設(shè)計(jì),圖形、圖像顯示等。CBuilder開發(fā)環(huán)境圖1-10Additional頁(yè)上的組件CBuilder開發(fā)環(huán)境3)Win32頁(yè)Win32頁(yè)上有19個(gè)組件,常用的有:RTF編輯器(RichEdit)、頁(yè)面控制框(PageControl)、進(jìn)度顯示欄(ProgressBar)、微調(diào)按鈕(UpDown)、日期輸入框(DateTimePicker)、月份牌(MonthCalendar)和樹結(jié)構(gòu)顯示框(TreeView)等,如圖1-11所示。這些控件功能強(qiáng)大,應(yīng)用廣泛。其中,RichEdit可顯示和編輯豐富的格式文本(這是一種標(biāo)準(zhǔn)的格式化文本文件,在Windows下擴(kuò)展名為.rtf,可在Word等字處理軟件中打開)。DateTimePicker或MonthCalendar可提供非常友好的日期輸入界面,TreeView可提供處理樹形結(jié)構(gòu)所需的圖形界面,但使用較復(fù)雜。CBuilder開發(fā)環(huán)境圖1-11Win32頁(yè)上的組件CBuilder開發(fā)環(huán)境4)System頁(yè)System頁(yè)上有8個(gè)組件,常用的有:Timer(定時(shí)器)、MediaPlayer(媒體播放器)和OleContainer(Ole容器)等,如圖1-12所示。這些組件用于時(shí)間控制、播放多媒體和插入Ole對(duì)象等。5)Dialogs頁(yè)Dialogs頁(yè)上有10個(gè)對(duì)話框組件,最常用的有:打開文件對(duì)話框(OpenDialog)、保存文件對(duì)話框(SaveDialog)、字體對(duì)話框(FontDialog)、顏色對(duì)話框(ColorDialog)和打印對(duì)話框(Printdialog)等,如圖1-13所示。它們將標(biāo)準(zhǔn)Windows風(fēng)格的對(duì)話框提供給應(yīng)用程序,使用十分方便。CBuilder開發(fā)環(huán)境圖1-12System頁(yè)上的組件CBuilder開發(fā)環(huán)境圖1-13Dialogs頁(yè)上的組件CBuilder開發(fā)環(huán)境6)DataControls、BDE、ADO、DataAccess頁(yè)Date、Controls、BDE、ADO、DateAccess這幾個(gè)頁(yè)上的組件都是用于對(duì)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開發(fā)提供支持的。與以前版本相比,BCB6.0對(duì)這幾個(gè)頁(yè)面作了較大調(diào)整。DataControls頁(yè)上的組件主要用于數(shù)據(jù)庫(kù)程序的界面設(shè)計(jì),如圖1-14所示。其中,DBEdit、DBMemo、DBListBox、DBComboBox、DBRadioGroup等組件分別與Standard頁(yè)上Edit、Memo、ListBox、ComboBox、RadioGroup等組件用法相似,但使用時(shí)要與數(shù)據(jù)表中的字段對(duì)象相聯(lián)系。CBuilder開發(fā)環(huán)境圖1-14DataControls頁(yè)上的組件CBuilder開發(fā)環(huán)境DataAccess頁(yè)上的組件主要用于連接各種數(shù)據(jù)集,其中最常用的是數(shù)據(jù)源(DataSource)組件。BDE是“BorlandDatabaseEngine”的縮寫,主要提供對(duì)本地?cái)?shù)據(jù)庫(kù)或符合ODBC標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)服務(wù)器的訪問(wèn)。BDE頁(yè)上的組件有表(Tabel)、查詢(Query)、數(shù)據(jù)庫(kù)(Database)以及存儲(chǔ)過(guò)程(StoredProc)等。ADO是Microsoft提出的新一代數(shù)據(jù)庫(kù)標(biāo)準(zhǔn),ADO頁(yè)面上各個(gè)組件為數(shù)據(jù)庫(kù)應(yīng)用程序采用ADO訪問(wèn)方式提供支持。BCB最大限度地在不同的數(shù)據(jù)庫(kù)技術(shù)標(biāo)準(zhǔn)之間保持兼容性,使現(xiàn)有的采用BDE技術(shù)的數(shù)據(jù)庫(kù)應(yīng)用能很方便地轉(zhuǎn)換成基于ADO的數(shù)據(jù)庫(kù)應(yīng)用。CBuilder開發(fā)環(huán)境7)其它頁(yè)除上面介紹的頁(yè)以外,組件面板上還有Internet、IntenetExpress、FastNet、ActiveX、Midas、dataSnap、WebSnap等頁(yè),提供了對(duì)Internet編程、Web服務(wù)器應(yīng)用程序、分布式多層數(shù)據(jù)庫(kù)應(yīng)用、COM以及CORBA等技術(shù)的廣泛支持。CBuilder開發(fā)環(huán)境1.3.2對(duì)象監(jiān)視窗口(ObjectInspector)ObjectInspector是BCBIDE的另一重要組成部分。它是一個(gè)可獨(dú)立控制的窗口,由一個(gè)位于窗口上方的組合框和位于該組合框下方的有兩個(gè)頁(yè)面的列表組成。這兩個(gè)頁(yè)分別稱為屬性(Properties)頁(yè)和事件(Events)頁(yè),單擊頁(yè)標(biāo)簽可在這兩個(gè)頁(yè)之間切換,如圖1-15所示。ObjectInspector上方的組合框用來(lái)選取一個(gè)組件或?qū)ο?,?dāng)選定了一個(gè)組件后,該組件的有關(guān)屬性和事件分別被填入屬性頁(yè)和事件頁(yè)。此外,在IDE的窗體設(shè)計(jì)區(qū)內(nèi)選中某組件時(shí),對(duì)應(yīng)的屬性也會(huì)自動(dòng)進(jìn)入ObjectInspetor。CBuilder開發(fā)環(huán)境BCB6.0新增了ObjectTreeView窗口,它是對(duì)象監(jiān)視窗口的附屬窗口(二者能合并成一個(gè)窗口)。由于該窗口以樹形方式顯示具有層次結(jié)構(gòu)的組件(類似于在Windows的“資源管理器”中顯示各級(jí)目錄),因此便于更迅速地找到所需處理的組件。CBuilder開發(fā)環(huán)境圖1-15ObjectInspector的兩個(gè)頁(yè)CBuilder開發(fā)環(huán)境從圖1-15可看到,屬性頁(yè)分為若干行和兩個(gè)欄,每一行對(duì)應(yīng)一項(xiàng)屬性,顯示在第一欄中的是屬性名,第二欄中的是屬性值。圖1-15上部的組合框內(nèi)顯示的“Form1”告訴我們,這是窗體Form1的屬性頁(yè),它屬于TForm1類,有Align、AutoScroll、AutoSize、BorderIcons、BorderStyle、Caption、ClientHeight、ClientWidth、Color、Cursor、DragMode、Enabled、Font、FormStyle、Height、Hint、Icon、Left、Name、Position、ShowHint、Top、Visible、Width、WindowState等屬性,這里顯示的各項(xiàng)屬性值多數(shù)是缺省定義的初值。CBuilder開發(fā)環(huán)境以上這些屬性中,Caption、Color、Cursor、DragMode、Enabled、Font、Height、Hint、Left、Name、ShowHint、Top、Visible、Width是所有可視控件的共有屬性。窗體是一種組件,同時(shí)又是一個(gè)容器,即窗體中可放入其它組件。因此,窗體是比較復(fù)雜的組件,相應(yīng)地具有較多屬性。如BorderIcons、BorderStyle、FormStyle、Position、WindowState等都是窗體特有的屬性。事件頁(yè)也被分為若干行和兩個(gè)欄。每一行對(duì)應(yīng)一種事件,顯示在第一欄中的是事件名,第二欄中的是與之聯(lián)系的處理方法名稱。缺省狀態(tài)下第二欄中都是空白,表示不必處理這些事件。CBuilder開發(fā)環(huán)境當(dāng)需要?jiǎng)?chuàng)建或修改某一事件的處理程序(方法)時(shí),可在ObjectInspector事件頁(yè)上找到該事件的所在行,然后雙擊該行的方法欄,就能生成或打開該方法的代碼段。通常BCB會(huì)按一定規(guī)則給出該方法的名稱,如TForm1::Button1Click表示Form1窗體內(nèi)按鈕Button1的OnClick事件的處理方法。BCB也允許輸入或選取一個(gè)方法名,還可以將同一方法指派到若干不同的事件。另外,直接雙擊控件也能創(chuàng)建或打開該控件的一個(gè)缺省事件,通常該缺省事件是OnClick事件。CBuilder開發(fā)環(huán)境從圖1-15中可看到,窗體主要有OnActivate、OnClick、OnClose、OnCreate、OnDbClick、OnDestroy、OnDragDrop、OnDragOver、OnHide、OnKeyDown、OnKeyPress、OnKeyUp、OnMouseDown、OnMouseMove、OnMouseUp、OnPaint、OnResize、OnShow等事件。上面這些事件中,OnClick、OnDbClick、OnDragDrop、OnDragOver、OnKeyDown、OnKeyPress、OnKeyUp、OnMouseDown、OnMouseMove、OnMouseUp是一般控件(TControl的派生類)共有的事件。CBuilder開發(fā)環(huán)境1.3.3代碼編輯器代碼編輯器窗口被一個(gè)垂直分隔條分成左右兩部分,其左側(cè)被稱為“Explore”區(qū)(可以被關(guān)閉),右側(cè)是代碼編輯器。源文件在“Explore”區(qū)內(nèi)顯示為一棵樹,樹節(jié)點(diǎn)可以折疊或展開,雙擊某節(jié)點(diǎn),即能使編輯器內(nèi)的光標(biāo)轉(zhuǎn)移到對(duì)應(yīng)的代碼上。代碼編輯器不僅是一個(gè)精致的文本編輯器,它還能夠提供許多與處理C++代碼有關(guān)的便利。該編輯器可打開多個(gè)頁(yè)面便于同時(shí)處理若干代碼文件,點(diǎn)擊頁(yè)標(biāo)簽可在頁(yè)面間切換。CBuilder開發(fā)環(huán)境代碼編輯器具有一定的語(yǔ)法分析功能,如能對(duì)文本中C++的保留詞用粗體顯示。在進(jìn)行代碼編輯時(shí),可用鼠標(biāo)移動(dòng)插入點(diǎn)和選取文本,使用Edit菜單的剪切、復(fù)制和粘貼等功能(它們也可用組合鍵Ctrl+X、Ctrl+C和Ctrl+V完成)。此外,可使用各種組合鍵進(jìn)行操作,如組合

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論