創世紀的C++ Builder--入門例子

跨出「世紀末」的程式人

自從十九世紀末,兩位姓名已隱去的巴黎編劇人發明了「世紀未」這個詞,以後每一百年,人們就要在頹廢、焦慮、不安、躁切的情愫裏走一趙輪回。而在這個世紀,也開始有人提出了種種的世紀末口號,從「世紀末軟體革命」、「世紀末文化革命」到「世紀末XX革命」,似乎只要冠上「世紀末」就足以代表這個世代的所有情愫。

對於程式人來說,「世紀末軟體革命」指的是物件導向程式設計方法所帶來的思維模式的轉變(Paradigm Shift),它改變了程式寫作的思維模式,擴大了程式人的視野,有人把它和工業革命相比擬,認爲它將會成爲軟體業界的工業革命;然而,我們都知道,軟體業的工業革命還未到來。我們都在等待,也都在期待著黎明的曙光。

程式人的「創世紀」情結

「創世紀」是程式人的圖騰,它可以代表程式人個性中勇於創造的特質,它也曾經是許多程式人最愛的RPG(角色扮演遊戲)。幾乎所有的程式人都喜愛並樂於享受創造物件的成就感,而這種熱中創造的特質,造就了許多優秀的程式。

在每個電腦世紀的交替中,都曾經産生一些創世紀的人物或産品司,其中Borland就是其中的一員。

Borland的霸王傳說

自從十五年前,Anders Hejlsber寫下了第一個Turbo Pascal編譯器以來,Borland就靠著Turbo Pascal穩定、優雅、與快速的編譯功能,加上當時的Pascal是資訊科系的「官話」,爲欽定的教學語言,使得Borland成爲雄霸一方的霸主。

隨著Turbo Pascal的成功,Borland乘勢而起,推出了Turbo C及Turbo C++,成爲第二個在PC上推出商業化C++ 的編譯器廠商(第一個是Zortech C++,由C++ 之父Bjarne Stroustrup親自設計,現在已被Symantec收購)。這幾個成功的産品,將Borland的聲勢帶上高峰,於是爲了更加打響Borland的名號,將旗下的所有産品,改冠以Borland之名,於是Borland的後續産品以Borland爲名,如Borland C++,Borland Pascal篹.等等。

在Windows世紀開創之初,Borland C++ 3.1是當初唯一可以在Windows開發Windows軟體的程式發展工具,當時Borland還以此爲號召,大力抨擊當時的MSC (Microsoft C)只能在Dos下撰寫Windows程式。然而隨著Visual C++ 的推出,情勢逆轉,在視覺發展工具的優勝劣敗下,Borland慢慢地喪失它既有的領土。

在這兩強對決的時代,Borland的開國功臣Turbo Pascal始終被遺忘在曆史的一個角落,然而它的開發小組也不是省油的燈,在經過了幾年的臥薪嘗膽之後,Anders Hejlsber再度帶領小組(這個小組似乎也不怎麽小篹.),石破天驚地推出了新一代的程式發展工具'Delphi ,這個以快速程式發展工具(RAD'Rapid application Development)爲號召的産品,一推出之後立即成爲鎂光镫的焦點,成爲拯救當時Borland的救火隊。

在Delphi推出之後,奠定了Borland在RAD領域的不朽地位,而Delphi也成爲在PC上唯一可以和工作站級的Nextstep IB (Interface Builder )等量齊觀的重量級發展工具,不過這時開始有人在思考,什麽時候Borland會推出C++ 的快速程式發展工具。

在去年的Comdex展,Borland開始贈予一套代號爲Ebony的程式發展工具,在幾經審閱之後,才發現它就是傳說中的Delphi for C++,也就是現在正式名稱爲Borland C++ Builder, 簡稱爲BCB的RAD。

Borland再次的開啓了一個RAD的戰場,和當初的Turbo Pascal一般,它的後繼者Delphi,是這場戰爭的先鋒,並且已爲Borland贏得了多次的前哨戰,然後隨著C++ Builder的推出,Delphi這個打了勝仗的先鋒是否會如它的前身Turbo Pascal般沒入曆史中呢?

短期看來是不會的,因爲BCB現在還算是喝Delphi的奶水長大的,它所使用的軟體元件都是以Delphi所撰寫的VCL元件(Visual Compoment Library),至於以後Borland會不會以BCB全盤改寫VCL呢?這是有可能的,那長期看來,BCB是否會取代Delhi呢?這似乎只能由時間來告訴我們了。不過Delphi之父Anders Hejlsber已經在去年由Borland離職了,這似乎透露了一些訊息。

說到這兒,我想您已經迫不及待地想要一睹C++ Builder的盧山真面目了,沒錯,今天這場RAD的戰爭已經開啓了,勝敗的的觀點已不是我們所關心的,我們所關心的是一個程式人的前哨站已經開打了,當別人都在使用C++ Builder這種重武器時,我們該如何因應?

既然無法反抗它,那就加入它! 讓我們參與C++ Builder 的創世紀吧!

離別Hello World的年代

許多電腦語言書籍入門書內的第一個程式都以一個印出Hello World字串的小程式作爲第一個入門程式,而在Windows程式設計領域享有天王之名的Charles Petzold在他聖經級的著作的PRogramming Windows 中也是以一個Hello Window做爲該書的開場白,在邁入C++ Builder的世紀之後,我就不再使用這種純古法饷造的方法來寫作了,爲了充份讓您感受它的致命吸引力,現在我所展示的給您的第一個程式是多媒體撥放程式,而且我會告訴您如何在十分鍾之內寫出一個多媒體撥放程式,「十分鍾!有沒有搞錯?」,沒錯,就是十分鍾,用C++ Builder你絕對可以在十分鍾內寫出一個夠水准的媒體播放程式'即使你是一個菜得不能再菜的初學者。

它的執行畫面如下:

創世紀的C++ Builder--入門例子

好戲開鑼啦!

在進入C++ Builder時你會看到以下的畫面

創世紀的C++ Builder--入門例子

首先我簡單地爲你介紹C++ Builder發展環境,在此我只對整個發展環境做一個簡單的浏覽,以利程式的撰寫。

C++ Builder發展環境主要分爲以下元件:

(1)表格(Form)視窗

(2)元件盒(Compoment palette)

(3)物件檢視器(Object Inspector)

(4)程式編輯器(Code Editor)

(5)加速棒(SpeedBar)

表格視窗 (Form)

創世紀的C++ Builder--入門例子

表格是C++ 程式設計的焦點,我們可以將表格視爲一張畫布,在程式設計時,我們主要做的工作只是將程式元件放置在表格上而已。因此表格其實可視爲一個包含其他元件的軟體元件。

元件盒(Compoment Palette)

創世紀的C++ Builder--入門例子

軟體元件是你用以架構C++ Builder程式的基本元素。在C++ Builder中軟體元件依其元件特性分門別類地放置在活頁式的元件盒中,在C++ Builder中提供了超過了百種以上的基本元件,程式設計時,只要將元件盒內的軟體元件拖放至表格中即可。

物件檢視器(Object Inspector)

創世紀的C++ Builder--入門例子

物件檢視器是用以改變物件的內容,改變該物件的行爲模式以符合你的需要。物件的內容包含了屬性(Property)及其事件處理程式(Event Handler)。你可以視需要改變指定物件的狀態及行爲模式。

程式編輯器(Code Editor)

創世紀的C++ Builder--入門例子

C++ Builder的程式編輯器是一個全功能的編輯器,它讓你可以存取及編輯所有專案內的程式。

加速棒(SpeedBar)

創世紀的C++ Builder--入門例子

加速棒(SpeedBar),顧名思義,它是用來加快程式的操作。C++ Builder將許多在功能表中常用的功能,在加速棒中以捷徑的方式提供你使用。

你的第一個C++ Builder程式

我們已經簡單地介紹了C++ Builder程式發展環境,現在我們要開始撰寫我們的第一個程式'媒體撥放程式。

設計表格

首先你要先設計你所要使用的表格長相。設計表格非常簡單,其實只是將軟體元件放在視窗中而已。以下我以幾個步驟示範表格的設計:

(1)開啓新表格

(2)將軟體元件置入表格中

(3)設定各個軟體元件的屬性

(4)執行程式

完成了以上的程序後,大抵一個程式也差不多設計完了。這也是C++ Builder的迷人之處。

開啓新表格

在進入C++ Builder後,它會自動爲你開啓一個新的表格。此時表格開啓的工作就算完成了,若是要加入其他新的表格,只要執行[File/New Form]即可。

將軟體元件置入表格中

在開啓新表格後,你可以在元件盒中選取元件,置入表格中,在此要非凡說明的是,在C++ Builder的設計時期(Design Time)和執行時期(run time),大部份元件的行爲模式幾乎是相同,所以在設計時你就可以看到程式執行的結果。

在我們的這個程式中,除了表格外,有一個元件包含了其它的元件,那就是活頁式表格元件(TabbedNoteBook),這個元件和表格類似,必須最早放入表格中以容納其他元件。

在我們的第一個程式中置入軟體元件後的結果如下:

創世紀的C++ Builder--入門例子

你可以看到,除了因爲沒有執行,所以沒有顯示動畫檔之外,它和執行的結果幾乎一模一樣。

首先我們來看看這個程式用到了那些元件。

創世紀的C++ Builder--入門例子
TTabbedNoteBook 活頁式表格元件。位於元件盒的「Win3.1」頁,用以做出「動畫及音效 及|音樂CD 兩個表格。

創世紀的C++ Builder--入門例子
Tlabel 標題元件。位於元件盒的「Standard」頁,用以顯示"媒體播放程式"字樣。

創世紀的C++ Builder--入門例子
TPanel 面板元件。位於元件盒的「Standard」頁,用以顯示動畫圖形檔。

創世紀的C++ Builder--入門例子
TMediaPlayer 媒體播放元件。位於元件盒的「System」頁,用以播放多媒體。

創世紀的C++ Builder--入門例子
TDriveListBox 磁碟機列表元作 。位於元件盒的「System」頁,用以顯示磁碟機名。

創世紀的C++ Builder--入門例子
TFilterComboBox 檔名過濾器元件。位於元件盒的「System」頁,用以過濾檔名。

創世紀的C++ Builder--入門例子
TDirectoryListBox 目錄列表元件。位於元件盒的「System」頁,用以顯示目錄。

創世紀的C++ Builder--入門例子
TFileListBox 檔案列表元作。位於元件盒的「System」頁,用以顯示檔案。

在使用這些元件時,請先至元件盒中選出欲使用的元件,然後將其拖放至表格中適當的位置,再改變元件的大小,如此你就可以得到一個表格的雛形了。

設定各個軟體元件的屬性

將軟體元件置入表格中之後,再來我們就要開始設定元件屬性了。爲了要讓這些元件互相合作,我們必須設定它們之間的關系,在設定之前我們先仔細想想它們之間的動作模式:

首先思考磁碟機及檔案元件的關系:

(1)改變磁碟機後,目錄必須跟著改變。

(2)改變目錄後,檔案列表必須跟著改變。

(3)改變檔名過濾器後,檔案列表必須跟著改變。

在了解它們的關系後,我們就可以開始動手來設定它們的屬性了,設定屬性其實非常簡單,只要在表格上選取該元件時,物件檢視器就會顯示該物件所有的屬性,以磁碟機元件爲例,當我們選取到該元件時,物件檢視器就會切換到如下圖所示的狀態:

創世紀的C++ Builder--入門例子

此時你可以看到在物件檢視器顯示了磁碟機列表元件的屬性,其中我們感愛好的是「DirList」一項,你可以選取該欄位,此時你會發現它會出現一個列表,這個列表會將目前表格中所有的目錄列表元件顯示出來,因爲我們所設計的表格中只有一個目錄列表元件,所以你只要選擇該列表中唯一的一個即可。

創世紀的C++ Builder--入門例子

以上的動作所代表的意義就是:建立磁碟機列表元件和目錄列表元件之間的關系,當磁碟機改變時,必須通知目錄列表元件,使其跟著改變。

同理我們選取目錄列表元件,並設定其屬性,在目錄列表元件中我們感愛好的是「FileList」欄位,此時你可以選取該欄位,並將它設定爲表格中的檔案列表元件。

創世紀的C++ Builder--入門例子

以上的動作所代表的意義就是:建立目錄列表元件和檔案列表元件之間的關系,當目錄改變時,必須通知檔案列表元件,使其跟著改變至目前目錄的列表。

接著我們選取檔名過濾器元件,並設定其屬性,在檔名過濾器元件中我們感愛好的是「FileList」欄位,此時你可以選取該欄位,並將它設定爲表格中的檔案列表元件。

創世紀的C++ Builder--入門例子

以上的動作所代表的意義就是:建立檔名過濾器元件和檔案列表元件之間的關系,當檔名過濾器改變時,必須通知檔案列表元件,使其跟著改變至目前的檔案列表。

最後,我們要設定檔名過濾器元件的過濾,在這個程式中我希望可以播放AVI動畫檔及WAV音效檔,所以必須適當地設定檔名過濾器元件,

同樣地,我們首先選取檔名過濾器元件。

創世紀的C++ Builder--入門例子

在這個元件中我們所感愛好的是其中的「Filter」屬性,因此我們在該項目上點二下,此時我們會看到如下的畫面:

創世紀的C++ Builder--入門例子

如圖所示,我們將AVI動畫檔及WAV音效檔的過濾字元填入即可。在程式執行時,拉下檔名過濾器時所顯示的名稱,就是你所填入的過濾器,它會發揮把關的角色,使得只有符合條件的檔名顯示在檔案列表中。

完成了以上動作之後,你就已經將磁碟機及檔案列表元件設定完成了,此時你可以先行執行程式,看看其動作是否正確。執行程式的方法是在選取選單上的「Run/Run」,或是直接按「F9」即可。

如何?神奇吧!用C++ Builder寫程式就是這麽簡單。

再來我們思考多媒體播放程式的部份,我們希望它的動作方式如下:

(1)以TPanel來顯示動畫畫面。

(2)以多媒體播放元件來播放目前檔案列表中所選取的檔案。

(3)在檔案列表元件以雙擊(Double-Click)來播放該檔案。

首先我們先來看看多媒體播放元件的內容:

創世紀的C++ Builder--入門例子

在多媒體播放程式中我們感愛好的是其中的「Display」項目。因此我們選取「Display」項目,此時你會看到所有在表格中可供顯示的元件:

創世紀的C++ Builder--入門例子

我們希望將動畫畫面顯示在「Panel1」元件中,因此請你選擇「Panel1」項目。完成這個動作之後,媒體播放程式在播放動畫檔時會將畫面顯示在「Panel1」上。

接著我們設定播放的動作:

要設定播放的動作,你必須選取多媒體播放元件,並將物件檢視器切換至「事件(Events)」頁,然後在其中的OnClick上按兩下(Double-Click),接著C++ Builder會爲你自動産生一段空的程式碼的,然後就切換至程式編輯器中。

創世紀的C++ Builder--入門例子

以下的畫面即是C++ Builder切換的程式編輯器畫面,此畫面我已經填入了程式碼,你的程式應該是空的。

創世紀的C++ Builder--入門例子

再來我們看看應該在其中填入那些程式碼呢?

void __fastcall TForm1::MediaPlayer1Click(TObject *Sender,

TMPBTnType Button, bool &DoDefault)

{

//以下爲我們填入的程式碼

if (Button==btPlay)

{

MediaPlayer1->FileName=FileListBox1->FileName;

MediaPlayer1->Open();

MediaPlayer1->Play();

DoDefault=FALSE;

} else

DoDefault=TRUE;

}

以上我們填入的程式碼的主要動作就是:

(1)將媒體播放元件檔名指定爲檔案列表元件目前的檔名。

(2)開啓媒體播放程式。

(3)開始播放。

進行到這兒,你可以再次執行程式。然後選取適當的檔案,在選好了檔案之後,你就可以在多媒體撥放元件中選擇執行

創世紀的C++ Builder--入門例子
,若是你所選擇的是AVI動畫檔,你已經可以看到動畫播放在我們所指定的元件「Panel1」上了。

創世紀的C++ Builder--入門例子

最後,我們希望再提供一種播放檔案的方式,那就是在檔案列表中以雙擊(Double-Click)的方式來播放指定檔案。此時我們可以選擇檔案列表元件,並將物件檢視器切換至事件頁,這時你會看到以下的畫面:

創世紀的C++ Builder--入門例子

同樣地你可以在「OnDblClick」項目雙擊,此時C++ Builder會自動爲我們産生程式碼,並且自動切換至程式碼編輯器中:

創世紀的C++ Builder--入門例子

上圖即爲程式碼編輯畫面,此畫面我已經填入了程式碼,你的應該是空的,接著你再於編輯器中填入以下的程式碼:

void __fastcall TForm1::FileListBox1DblClick(TObject *Sender)

{

MediaPlayer1->FileName=FileListBox1->FileName;

MediaPlayer1->Open();

MediaPlayer1->Play();

}

以上我們填入的程式碼的主要動作就是:

(1)將媒體播放元件檔名指定爲檔案列表元件目前的檔名。

(2)開啓媒體播放程式的指定檔案。

(3)開始播放。

在完成了上述的操作之後,你可以再次地執行程式,選取欲播放的檔案,然後以雙擊的方式來執行檔案。

進行到這兒,你已經把握了C++ Builder程式設計的精神,也寫出了一個不錯的媒體播放程式。你是不是對C++ Builder的快速程式發展環境(RAD:Rapid Application Development)愈來愈有信心了呢?

接下來你會發現,到目前爲止,我似乎沒有把這個範例程式完全解說清楚,因爲前面的執行畫面中的活頁式表格元件中,還有另一頁是「音樂CD」的播放,另外關於「媒體撥放程式」這個字形的設定方式也沒有解說。

是的,沒錯,這些都是我打算留給你自行練習的項目,因爲較之前面所述的幾個操作,它們都簡單多了,以下我先簡單透露幾個重點:

(1)選擇「活頁式表格」元件,並改變其「Pages」屬性。利用它所提供的編輯器,編輯頁數及名稱。

(2)將「ActivePage」切換至音樂CD頁,如前面所述加入一個多媒體播放元件。

(3)將多媒體播放元件的「Device Type」設定爲CD Audio.

(4)撰寫播放程式碼。因爲播放音樂CD不需要開檔,所以不需要指定檔案。

(5)設定各個標的字形。

完成了以上的動作後,你可以再度執行程式並切換「音樂CD」中,放入CD,然後就可以播放CD了。

你可以試著自行去打造你的程式畫面,以上的程式畫面都只用了簡單的標題元件及圖形元件而已,你可以嘗試著玩玩看。

以上就是我們用C++ Builder所撰寫的第一個程式,它是不是給了你一個全新的感受,原來Window 程式設計也可以是如此這般的輕松。

當然,這只是一個開始而已,在後續的單元中,我會繼續帶著你走進C++ Builder所架構的漂亮新世界,探索這種新的程式設計方法。

C++程序設計簡明教程(21世紀高等院校規劃教材)|報價¥23.30|圖書,計算機與互聯網,程序設計,C/C++及其相關,C++語言,入門教程,王曉東
目錄:圖書,計算機與互聯網,程序設計,C/C++及其相關,C++語言,入門教程,品牌:王曉東基本信息·出版社:中國水利水電出版社·頁碼:321 頁碼·出版日:2008年·ISBN:7508450833/9787508450834·條碼:9787508450834·...查看完整版>>C++程序設計簡明教程(21世紀高等院校規劃教材)|報價¥23.30|圖書,計算機與互聯網,程序設計,C/C++及其相關,C++語言,入門教程,王曉東
 
C語言程序設計實用教程(21世紀高等學校本科計算機專業系列實用教材)|報價¥22.30|圖書,計算機與互聯網,程序設計,C/C++及其相關,C語言,入門教程,張宗傑
目錄:圖書,計算機與互聯網,程序設計,C/C++及其相關,C語言,入門教程,品牌:張宗傑基本信息·出版社:電子工業出版社·頁碼:306 頁碼·出版日:2008年·ISBN:7121053411/9787121053412·條碼:9787121053412·版次:...查看完整版>>C語言程序設計實用教程(21世紀高等學校本科計算機專業系列實用教材)|報價¥22.30|圖書,計算機與互聯網,程序設計,C/C++及其相關,C語言,入門教程,張宗傑
 
C語言教程(21世紀高職高專計算機系列教材)|報價¥20.90|圖書,計算機與互聯網,程序設計,C/C++及其相關,C語言,入門教程,周豐
目錄:圖書,計算機與互聯網,程序設計,C/C++及其相關,C語言,入門教程,品牌:周豐基本信息·出版社:華中科技大學出版社·頁碼:267 頁碼·出版日:2008年·ISBN:756094325X/9787560943251·條碼:9787560943251·版次...查看完整版>>C語言教程(21世紀高職高專計算機系列教材)|報價¥20.90|圖書,計算機與互聯網,程序設計,C/C++及其相關,C語言,入門教程,周豐
 
C++ Builder 6 進行 SOAP 開發(1) -- 一個 Hello world! 的例子
C++ Builder 6 BizSnap/SOAP/WebService(1) -- 一個 Hello world! 的例子 作爲 Delphi 的兄弟, C++ Builder 在很多方面都跟 Delphi 是如出一轍,在 SOAP/WebService 方面當然也是大同小異了。關于用 Delphi 進行...查看完整版>>C++ Builder 6 進行 SOAP 開發(1) -- 一個 Hello world! 的例子
 
C語言程序設計與實訓教程(21世紀高職高專規劃教材)|報價¥14.90|圖書,計算機與互聯網,程序設計,C/C++及其相關,C語言,入門教程,李小遐
目錄:圖書,計算機與互聯網,程序設計,C/C++及其相關,C語言,入門教程,品牌:李小遐基本信息·出版社:北京理工大學出版社·頁碼:218 頁碼·出版日:2008年·ISBN:7564013257/9787564013257·條碼:9787564013257/.9...查看完整版>>C語言程序設計與實訓教程(21世紀高職高專規劃教材)|報價¥14.90|圖書,計算機與互聯網,程序設計,C/C++及其相關,C語言,入門教程,李小遐
 
C++ builder 的文件讀寫操作總結
  在編程的過程中,文件的操作是一個經常用到的問題,在C++Builder中,可以使用多種方法對文件操作,下面我就按以下幾個部分對此作具體介紹,就是:  1、基于C的文件操作;  2、基于C++的文件操作;  3、基于W...查看完整版>>C++ builder 的文件讀寫操作總結
 
C++ Builder 初學問與答(三)
  3. 按鈕類組件    21)問:在進行Windows程序界面設計中,經常會用到按鈕,在C++Builder中,按鈕一定是通過按鈕組件來實現的嗎? ...查看完整版>>C++ Builder 初學問與答(三)
 
C++ Builder 初學問與答 (十)
C++ Builder 初學問與答 (十)
  10.菜單組件  77)問:菜單是Windows常用的用戶界面。對于一個能夠實際應用的程序,菜單是必不可少的組成部分。C++Builder中是怎樣實現菜單的?  答:C++Builder爲我們提供了兩種菜單組件:一種是主菜單組件...查看完整版>>C++ Builder 初學問與答 (十)
 
C++ Builder 初學問與答(十二)
  13.對話框組件  96)問:怎樣編寫文件打開、保存等對話框?   答:C++Builder爲我們提供了許多常用的對話框組...查看完整版>>C++ Builder 初學問與答(十二)
 
 
回到王朝網路首頁