在BCB中使用向量實現控制元件陣列 (轉)

worldblog發表於2007-12-12
在BCB中使用向量實現控制元件陣列 (轉)[@more@]

  前幾天在CSDN的BCB版有人問起這樣的問題:“五個Button的OnClick事件對應改變五個Label的名稱”,因為BCB沒有陣列,所以當時大家的回答大都是基於RTTI的,昨天在看《C++ Primer》的時候,忽然想起了標準庫中的vector型別,我們用這個型別也可以實現控制元件陣列。

  今天試了一下,我把實驗的過程寫在這裡。首先要包含頭並,設定名字空間,宣告變數。在MainForm.h中:

#include

using namespace std //標準庫的名字空間

在Form1的public中宣告 vector test;

注意,這裡我曾想用vector test(5)的形式來初始化該陣列,但BCB好象不支援這種形式,這方面的問題還有待解決。

  然後在主窗體上加兩個Button和一個Label(命名為testLabel),在Button1的事件中,初始化這個陣列。

for(int i=0;i<5;i++)

{

  TLabel * Label=new TLabel(this);

  Label->Parent=Form1;

  Label->Top=20*i;

  test.push_back(Label);

}

test.push_back(testLabel);//測試陣列是否可以包含靜態生成的控制元件。這時的陣列應該是包含6個成員變數。

在Button2中寫入如下程式碼:

for(int i=0;i

{

  test[i]->Caption="wolf"+AnsiString(i):

}

該例子透過對一個陣列迴圈賦值來產生一個控制元件陣列,並透過迴圈來操作這個陣列。這裡展示的僅僅是vector資料型別很粗淺的一種用法,C++的STL技術可以給我們的帶來更大的自由和彈性。

以上程式碼在和BCB5環境中編譯透過。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991959/,如需轉載,請註明出處,否則將追究法律責任。

相關文章