TObject - C++ Builder

C++ Builder 參考手冊 ? System ? TObject


System::TObject 是所有的 VCL 和 FMX 控件的頂級父類寺惫。

  • System::TObject 簡介
  • System::TObject 成員
  • 例子:
    多個控件共用一個事件函數(shù)
    獲取一個控件的所有的父類一直到頂級父類
    枚舉所有的屬性均澳、方法烦粒、事件和成員變量

一. System::TObject 簡介

System::TObject 是所有的 VCL 和 FMX 控件的頂級父類撑刺。

  • 頭文件:#include <systobj.h>
  • 命名空間:System
  • 對象實例的創(chuàng)建直奋、維護、和銷毀時的內(nèi)存管理
  • 響應對象實例的創(chuàng)建和銷毀
  • 提供返回對象的類型 (class-type) 和實例信息 (instance information)湖笨,
  • 支持返回 __published: 屬性的運行時類型信息 (RTTI, runtime type information)。
  • 支持消息處理
  • 支持接口的實現(xiàn) (interfaces implemented)
  • TObject 和從 TObject 繼承來的類不能直接定義為對象捎谨,必須定義為指針,用 new 創(chuàng)建出來憔维;
  • TObject 是一個抽象類涛救,雖然在程序代碼上沒有限制直接創(chuàng)建一個 TObject 實例;

二. System::TObject 的成員

成員函數(shù) 說明
public: ?
AfterConstruction 在構造函數(shù)結束的時候會自動調用 AfterConstruction
BeforeDestruction 在執(zhí)行析構函數(shù)之前會自動調用 BeforeDestruction
ClassInfo 返回運行時類型信息表 (RTTI table)
ClassName 獲取類名业扒,不包含命名空間的類名字符串
ClassNameIs 判斷類名是否為參數(shù)指定的字符串
ClassParent 返回父類的類型信息
ClassType 返回類的類型信息
CleanupInstance 清除長字符串检吆、Variants、接口變量等
DefaultHandler 默認的消息處理
Dispatch 處理消息的函數(shù)
DisposeOf 強制銷毀對象
Equals 比較當前對象和 Obj 對象是否相同
FieldAddress 通過成員名稱返回成員的地址
Free 銷毀對象 (Delphi)
FreeInstance 釋放 NewInstance 分配的內(nèi)存
GetHashCode 返回對象的 hash 值
GetInterface 獲取指定的接口
GetInterfaceEntry 獲取接口項目
GetInterfaceTable 獲取接口表
InheritsFrom 當前對象的類是否從 AClass 繼承過來的
InitInstance 初始化成員程储,給他們清零
InstanceSize 返回給實例數(shù)據(jù)分配內(nèi)存需要多少字節(jié)數(shù)
MethodAddress 通過名稱返方法的地址
MethodName 通過方法的地址返回名稱
NewInstance 給實例分配內(nèi)存蹭沛,并且返回新的實例的地址
QualifiedClassName 返回包含命名空間的類名
SafeCallException 處理異常的函數(shù)
TObject 構造函數(shù)
~TObject 析構函數(shù)
ToString 轉為字符串
UnitName 返回類所在的命名空間
UnitScope 返回類所在的命名空間

三. 例子

1. 多個控件共用一個事件函數(shù)

  • 控件的事件一般都有一個參數(shù)是 TObject *Sender,這個指針指向產(chǎn)生事件的控件虱肄,可以通過這個指針來區(qū)分不同的控件致板。
  • 除了可以通過控件的 Name 屬性區(qū)分不同的控件之外交煞,還可以使用控件的 Tag 屬性來區(qū)分咏窿,這個屬性是整數(shù),可以隨意指定不同的整數(shù)值來區(qū)分不同的控件素征,整數(shù)可以方便的使用 switch 語句集嵌。

這個例子把 Button1、Button2御毅、Button3 的 Tag 屬性分別設為 101根欧、102、103端蛆。

控件的 Tag 屬性設置編號
三個按鈕共用一個 OnClick 事件函數(shù)
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Memo1->Lines->Add(Sender->ClassName());

    TButton *lpButton = dynamic_cast<TButton *>(Sender);
    if(lpButton)
    {
        Memo1->Lines->Add(lpButton->Name);
        Memo1->Lines->Add(lpButton->Tag);

        switch(lpButton->Tag)
        {
            case 101: break; // Tag 編號為 101 的按鈕
            case 102: break; // Tag 編號為 102 的按鈕
            case 103: break; // Tag 編號為 103 的按鈕
        }
    }
}

運行結果:點擊按鈕 Button2凤粗,可以得到控件的類名 "TButton",名稱 "Button2" 和 Tag 編號 102今豆。

點擊按鈕 Button2 的運行結果

2. 獲取一個控件的所有的父類一直到頂級父類

void __fastcall TForm1::Button4Click(TObject *Sender)
{
    TObject *p = Button1;
    TClass c = p->ClassType();
    while(c)
    {
        Memo1->Lines->Add(c->ClassName());
        c = c->ClassParent();
    }
}

運行結果:可以看到嫌拣,Button1 是 TButton 類柔袁,父類是 TCustomButton,TCustomButton 的父類是 TButtonControl异逐,……一直到頂級父類 TObject捶索。

運行結果

3. 枚舉所有的屬性、方法灰瞻、事件和成員變量

請參考《C++ Builder 枚舉控件所有的屬性腥例、事件和方法》的 void ShowAllMembers(TObject *pObject) 函數(shù),可以枚舉從 TObject 繼承的類的所有的成員酝润,包括屬性燎竖、事件、方法和成員變量要销。


參考:


C++ Builder 參考手冊 ? System ? TObject

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蕉陋,隨后出現(xiàn)的幾起案子捐凭,更是在濱河造成了極大的恐慌,老刑警劉巖凳鬓,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茁肠,死亡現(xiàn)場離奇詭異,居然都是意外死亡缩举,警方通過查閱死者的電腦和手機垦梆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仅孩,“玉大人托猩,你說我怎么就攤上這事×赡剑” “怎么了京腥?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長溅蛉。 經(jīng)常有香客問我公浪,道長,這世上最難降的妖魔是什么船侧? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任欠气,我火速辦了婚禮,結果婚禮上镜撩,老公的妹妹穿的比我還像新娘预柒。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布宜鸯。 她就那樣靜靜地躺著人灼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪顾翼。 梳的紋絲不亂的頭發(fā)上投放,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天,我揣著相機與錄音适贸,去河邊找鬼灸芳。 笑死,一個胖子當著我的面吹牛拜姿,可吹牛的內(nèi)容都是我干的烙样。 我是一名探鬼主播,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蕊肥,長吁一口氣:“原來是場噩夢啊……” “哼谒获!你這毒婦竟也來了?” 一聲冷哼從身側響起壁却,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤批狱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后展东,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赔硫,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年盐肃,在試婚紗的時候發(fā)現(xiàn)自己被綠了爪膊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡砸王,死狀恐怖推盛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谦铃,我是刑警寧澤耘成,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站荷辕,受9級特大地震影響凿跳,放射性物質發(fā)生泄漏。R本人自食惡果不足惜疮方,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望茧彤。 院中可真熱鬧骡显,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至溜歪,卻和暖如春若专,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蝴猪。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工调衰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人自阱。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓嚎莉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親沛豌。 傳聞我的和親對象是個殘疾皇子趋箩,可洞房花燭夜當晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內(nèi)容