?? c++biulder 程序設計兩點技巧 (轉).txt
字號:
作者:hxfwsk
email: hxfwsk@hotmail.com
日期:6/15/2001 7:26:24 PM
我在開發一個軟件的過程中,遇到了不少的困難。其中有些問題,是系統的幫助、一般的書籍是不可能提到的,只能靠自己摸索。以下是我在實踐中總結的一些經驗,現在整理出來讓同行們參考,避免走彎路。不對之處,請多多指正。
一、窗體的訪問:
---- 由系統直接建立的窗體(全局可見)、由父窗體動態建立的子窗體,可直接通過名稱訪問。但是如果父窗體也是動態建立的,而由父窗體動態建立的子窗體想要訪問父窗體,則不能通過直接引用父窗體的名稱來實現。如在父窗體(類:TfrmParent 實例:frmParent)有以下代碼:
TfrmChild *frmChild=new TfrmChild (this);
frmChild->Show( );( 或ShowModal ( ) )
---- 動態生成了一個子窗體,而在子窗體想要訪問父窗體的Edit1成員,則應該使用下面的方式:
---- ((TfrmParent*)this->Owner)->Edit1->Text="從子窗體訪問父窗體的成員Edit1。";
二、組件數組的使用:
---- VB的控件數組非常方便,可以使多個控件通過索引來進行集體引用,并且共享同一個帶索引參數的事件處理程序。在C++Biulder中不直接支持這樣的控件數組,給編寫需要大量同一個類型控件的程序帶來不便。通過摸索,我發現可用TList類來實現這個想法。如在一個窗體中大量使用CheckBox控件:
---- 1、在窗體類中聲明一個變量:TList *CHKBXList;
---- 2、在窗體的構造函數中加入以下代碼:
---- CHKBXList=new Tlist;//使用的系統類提供的抽象類,聲明了定義后, //還要在實現文件中用new生成實例對象。
CHKBXList ->Add(CheckBox1);
CHKBXList ->Add(CheckBox2);
CHKBXList ->Add(CheckBox3);
……
---- 3、引用方法:
---- ((TCheckBox *) CHKBXList)->Items[ i ])->Checked= true;
---- 注意兩點:首先,因為Tlist的Item 屬性返回的是 Void * 類型的指針,所以要用(TCheckBox *)對此指針進行強制轉換。其次,索引的編號是從0開始的,即 i 應該從0開始算,不要搞錯了。
---- 對于共享事件處理,可以采用其中任意一個控件的的事件處理程序。如:
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
…….//添入事件處理代碼
}
---- 然后,在其它控件的屬性工具窗口中選擇 Events 標簽,再在OnClick 欄點擊下拉框,選擇CheckBox1Click 即可。
---- 以上程序在win98、C++Biulder 5 環境下調試成功。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -