BCB動態生成控制元件
重要:BCB程式機制是:窗體上的所有物件與窗體本身都成為一個類:TForm1,我們就是將類成員與類成員函式寫到TForm1類中,程式執行時,實際上就是透過TForm1 類生成Form1物件,所以,Unit1.cpp中的函式都以void __fastcall TForm1::打頭,這就表明這些函式都是TForm1類的類成員函式,它們呼叫在類中我們定義的類成員。當然,我們可以在Unit1.cpp中定義我們自己的變數和函式,供其它函式呼叫,這點符合C呼叫規範。當然,這種類外界的函式是不能呼叫到TForm1類中定義的類成員與類成員函式的,除非是公有成員與公有成員函式,但必須在公有成員與公有成員函式前加上物件名稱,即Form1->TForm1類公有成員(或TForm1類公有成員函式)。
1、本例是BCB物件導向設計的精髓,完全是利用類生成物件機制。
2、新建立一個BCB工程,在上面放一個按鈕Button1
3、Unit1.h
////---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: //// IDE-managed Components
TButton *Button1;
void __fastcall Button1ClickClick(TObject *Sender);
private: // User declarations
////定義類私有成員函式,用來刪除所有已生成的按鈕
void __fastcall DeleteAllBn(void);
////定義類私有成員函式,用來生成共公響應事件
void __fastcall BtnClick(TObject *Sender);
////定義大小為30的按鈕類物件
TButton *Bn[30];
////用來記錄已生成按鈕的數量
int BnCount;
public: //// User declarations
////窗體類的建構函式
__fastcall TForm1(TComponent* Owner);
////窗體類的解構函式
__fastcall ~TForm1();
};
__fastcall TForm1::~TForm1()
{
////在解構函式中將已生成的按鈕物件刪除
DeleteAllBn();
}
////---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
////---------------------------------------------------------------------------
#endif
4、Unit1.h
TForm1 *Form1;
////---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//// 釋放所有資源
void __fastcall TForm1::DeleteAllBn(void)
{
int ii;
for(ii=0;ii
delete Bn[ii];
}
}
////---------------------------------------------------------------------------
void __fastcall TForm1::Button1ClickClick(TObject *Sender)
{
int ii,yy,ww;
ww=12;yy=45;
//// 釋放所有資源
DeleteAllBn();
ShowMessage("所有原先生成的資源都已釋放!!!按任意鍵重新生成!!!");
for(ii=0;ii<30;ii++)
{
Bn[ii]=new TButton(this);
Bn[ii]->Parent=this;
////置響應函式
Bn[ii]->OnClick=BtnClick;
Bn[ii]->Caption=IntToStr(ii);
////根據視窗的寬度佈置按鈕的位置
if(ww+Bn[ii]->Width+5>Width)
{
yy=yy+Bn[ii]->Height+5;
ww=12;
}
Bn[ii]->Left=ww;
Bn[ii]->Top=yy;
ww=ww+Bn[ii]->Width+5;
}
////標記當前生成了多少個按鈕
BnCount=30;
}
////公共響應函式
void __fastcall TForm1::BtnClick(TObject *Sender)
{
TButton *cn;
cn=(TButton *)Sender;
ShowMessage(cn->Caption);
}
////---------------------------------------------------------------------------
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16396910/viewspace-1030816/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- BCB中實現動態建立元件 (轉)元件
- Android動態生成控制元件居中顯示Android控制元件
- Android 動態佈局 動態生成 銷燬控制元件 改變控制元件的位置等Android控制元件
- BCB 窗體透明控制元件 (轉)控制元件
- 動態移動控制元件 (轉)控制元件
- 在BCB中陣列的妙用和紀錄和改變控制元件的狀態 (轉)陣列控制元件
- 在BCB中輕鬆使用ActiveX控制元件 (轉)控制元件
- ajax動態生成table
- Qt動態新增控制元件QT控制元件
- 動態新增easyui 控制元件UI控制元件
- 在BCB中使用向量實現控制元件陣列 (轉)控制元件陣列
- 動態計算控制元件高度控制元件
- JavaScript動態生成html元素JavaScriptHTML
- Emit動態生成程式碼MIT
- cmake:生成靜態庫和動態庫
- BCB:TEdit控制元件右對齊的簡單實現 (轉)控制元件
- 動態綁資料(Repeater控制元件控制元件
- 動態生成簽名工具類
- 動態生成ios plist的方法iOS
- Extjs動態生成表頭JS
- asp.net動態表格生成ASP.NET
- jq動態生成二維碼
- easyui datagrid 動態生成列UI
- mysql 動態生成測試資料MySql
- Flutter 熱更新及動態UI生成FlutterUI
- 利用shell指令碼生成動態sql指令碼SQL
- javascript如何動態生成一個元素JavaScript
- 請教,如何動態生成Java類?Java
- 更快的輔助生成: 動態推測
- 動態庫的生成和使用(二)
- BCB5:TrayIcon控制元件的使用、問題及對策 (轉)控制元件
- Silverlight中DataGrid控制元件動態生成列並結合DataPager進行分頁控制元件
- 使用者控制元件的動態載入控制元件
- aspx頁面中動態建立控制元件 (轉)控制元件
- 動態新增控制元件時,計算控制元件大小的解決方法控制元件
- 通過類名動態生成物件物件
- PHP--動態生成sql查詢表格PHPSQL
- 使用form-create動態生成vue元件ORMVue元件