TObject::MethodName - C++ Builder

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


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

__classmethod UnicodeString __fastcall MethodName(void *Address);

System::TObject::MethodName 是 System::TObject 的成员函数,通过方法的地址返回函数名称。

参数:
Address:成员函数的地址,即 __closure 指针转为 TMethod 对象之后的 TMethod 的 Code 成员,这和 MethodAddress 方法得到的地址是一样的,这个函数和 MethodAddress 函数互为逆运算。

返回值:
成员函数的函数名,如果成员函数是这个类的 __published: 成员;空字符串,如果成员函数不是 __published: 成员,或者这个地址不是这个对象的成员函数。


例:按钮 Button1 的点击事件函数 Button1Click 是窗口设计时自动生成的,是 Form1 的 __published: 成员,把 Button1Click 转成 __closure 指针,再转成 TMethod 对象,通过 MethodName 得到函数的名称。

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    void __fastcall (__closure *p)(TObject *) = &Button1Click;
    TMethod *Method = (TMethod *) &p;
    UnicodeString s = this->MethodName(Method->Code);
    ShowMessage(s);
}

运行结果:

运行结果

参考:

  • C++ Builder 的 PME 架构
  • C++ Builder 枚举控件所有的属性、事件和方法
  • System::TObject::MethodAddress
  • System::TObject::FieldAddress
  • System::TObject::ClassInfo
  • System::TObject::ClassType
  • System::TObject
  • VCL 类继承关系

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

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