TObject::ClassName - C++ Builder

C++ Builder 参考手册 ➙ System ➙ TObject ➙ ClassName


头文件:#include
命名空间:System
函数原型:

__classmethod UnicodeString __fastcall ClassName();

System::TObject::ClassName 是 System::TObject 的成员函数,

  • 返回类名,不包含命名空间;
  • 通过父类指针获取到的类名是子类的类名;
  • 支持 UNICODE,类名可以是中文或其他国家的语言,不仅仅是英文。

例1:通过父类指针获取到的是子类的类名,即真实的类名

这个例子通过 TObject 指针获取产生这个事件的控件的真实的类名和含有命名空间的类名。

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Memo1->Lines->Add(Sender->ClassName());
    Memo1->Lines->Add(Sender->QualifiedClassName());
}

运行结果:

  • 得到了产生事件的控件的类名是 TButton,含有命名空间的类名是 Vcl.StdCtrls.TButton;
  • 含有命名空间的类名在各部分之间分割都是 ".",而不是 "::",TObject 的 QualifiedClassName 方法始终应用 Delphi 命名规则;
  • 命名空间的名称是对的,大小写和实际的不符,原因是这个控件是用 Delphi 编译出来的,Delphi 不需要区分大小写。
运行结果:通过 TObject 指针获取控件的类名

例2:测试自己写的类的类名,测试 UNICODE 类名

namespace 玄坴 {
namespace HsuanLu {

class 测试类 : public TObject
{
public:
    __fastcall 测试类()
    {
    }
};

}
}

void __fastcall TForm1::Button2Click(TObject *Sender)
{
    玄坴::HsuanLu::测试类 *pObj = new 玄坴::HsuanLu::测试类;
    Memo1->Lines->Add(pObj->ClassName());
    Memo1->Lines->Add(pObj->QualifiedClassName());
    delete pObj;
}

运行结果:

获取类名的运行结果

参考:

  • System::TObject::QualifiedClassName
  • System::TObject::ClassNameIs
  • System::TObject::UnitName
  • System::TObject::UnitScope
  • System::TObject::ClassInfo
  • System::TObject::ClassType
  • System::TObject
  • VCL 类继承关系

C++ Builder 参考手册 ➙ System ➙ TObject ➙ ClassName

你可能感兴趣的:(TObject::ClassName - C++ Builder)