TObject::QualifiedClassName - C++ Builder

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


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

__classmethod UnicodeString __fastcall QualifiedClassName();

System::TObject::QualifiedClassName 是 System::TObject 的成员函数,返回包含命名空间的类名。

  • UnitName 返回的是命名空间,ClassName 返回的是类名,合在一起就是 QualifiedClassName;
  • 通过父类指针获取到的类名是子类的类名;
  • 支持 UNICODE,类名可以是中文或其他国家的语言,不仅仅是英文;
  • 含有命名空间的类名在各部分之间分割都是 ".",而不是 "::",TObject 的 QualifiedClassName 方法始终应用 Delphi 命名规则;
  • 如果是用 Delphi 编译出来的控件,命名空间的名称是对的,大小写和实际的不符,原因是 Delphi 不需要区分大小写。

例1:获取类名和包含命名空间的类名。Button1 的点击事件里面,Sender 指向产生事件的控件,即 Button1,通过 Sender 获取到的类名是 Button1 的类名 TButton。

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

运行结果:

获取类名和包含命名空间的类名的运行结果

例2:测试继承 TObject 自己写的类的类名,测试 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::ClassName
  • System::TObject::ClassNameIs
  • System::TObject::UnitName
  • System::TObject::UnitScope
  • System::TObject::ClassInfo
  • System::TObject::ClassType
  • System::TObject
  • VCL 类继承关系

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

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