用C++Builder 6編寫VCL控件

C++Builder 6編寫VCL控件

warton 2002.12西安

   如今天使用Borland的開發工具的程序員越來越多了,許多程序員開始從VC++,BC++等工具轉向C++Builder(以下簡稱BCB  Borland C++Builder) Delphi。要使用這兩種開發工具,你就要用到VCL(Visual Component Library 可視化控件庫)。關於編寫VCLDelphi的書籍和資料相當多,但是要使用C++來寫,資料就少得多了。

如何用C++語言來編寫VCL控件是許多學習和使用BCB的程序員很關心的話題。如何編寫呢?下面,我將編寫VCL的思想和方法做一簡單介紹,並給出一個簡單的示例,以便讓廣大C++愛好者能熟悉和使用BCB來更好地編寫程序。

首先,給出一個VCL的繼承關係和結構圖(TForm爲例)

TObject

|

TPersistent

|

TComponentt

|

TControl

|

TWinControo

|

TScrollingWinControl

|

TCustomForm

|

TForm

從上面的圖中可以看出:TObject 是所有派生類的父類,面TComponent是所有可視化組件的父類,TWinControl是所有窗口類組件的父類。只有從TWinControl繼承的組件才具有 Handle屬性。由於BCBDelphi使用相同的類庫VCL,所以關於組件繼承方面的知識,程序員可以參考Delphi的書籍。然而用C++編寫VCL就與使用Pascal(Delphi 中使用Object Pascal)編寫有相當大的區別了。

VCL有一個大概的瞭解之後,咱還需要明白一些事情:用C++寫的VCL類還是一個C++類,但是它與標準的C++類有一些區別。其中最重要的是VCL組件不具有多繼承性。從TForm的繼承關係圖中我們可以看出這一點。

下面我們先做一個示例,簡單講述一下使用BCB來編寫VCL的步驟:

1.              建立一個組件包:Package。在C++BuilderFile菜單中選擇New選項,隨後在彈出的New Items窗口中Package圖標,單擊OK,如圖 1-2所示。然後將Package保存爲MyComponent.bpk

                           1-2 建立一個新的Package

2.       新建一個組件。單擊Package窗口上的Add按鈕,如圖1-3所示。

1-3 Package 窗口

3.       在彈出的Add窗口中選擇New Component頁,如圖1-4所示。

選擇繼承於TPanel,將Class Name命名爲:UserControl,Palette Page改爲User,隨後確定。

1-4新建一個組件

經過上面的步驟,一個簡單的Package就已經可以安裝在BCB的控件面板上了。現在你只需要單擊Package窗口的Compile按鈕編譯之後,單擊Install按鈕就可以將這個組件安裝到一個標籤爲MyPalette上了。

BCB的控件面板上打開My標籤,你將可以看到一個圖標和Panel一樣的圖標,它就是TMyComponent類安裝後的表現形式。到現在爲止,一個簡單的控件已經可以使用了。但是它沒有什麼特殊的功能,它只是簡單地繼承了TPanel控件,並且TMyComponent的所有屬性和事件都是TPanel的,我並沒有給它定義新的屬性,方法和事件。也就是說,現在TMyCommponentTPanel基本上完全一樣(從功能上講)

控件寫到這,你是不是已經覺得用BCB寫控件很簡單?不錯,簡單點幾下鼠標就可以寫一個控件,的確太簡單了。但是這只是開始,困難的還在後面。

下面,分別從編寫方法,屬性,事件三方面來講述編寫一個完整的VCL控件的方法。

 

(未完待續)

 

發佈了35 篇原創文章 · 獲贊 1 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章