我是通过TObject *Sender接收了一个参数,在我不知道其类型的情况下如何将其转换成原有类型???
TClass ClassRef;
ClassRef=Sender->ClassType();
String(ClassRef->ClassName())
就知道是什么类型了啊。
TButton *lpButton=dynamic_cast<TButton*>(Sender);
if(lpButton)
ShowMessage("The sender is a object of TButton");
关注,好象只能事先定好类型,然后使用
c++好象不能这样做!
TClass ClassRef;
ClassRef=Sender->ClassType();
String sClassName=String(ClassRef->ClassName()) ;
if(sClassName=="TButton")
{
dynamic_cast<TButton*>(Sender);
//处理...
}else
if(sClassName=="TBitBtn")
{
dynamic_cast<TBitBtn*>(Sender);
//处理...
}
(ClassType*)Sender就可以了
例如(TButton*)Sender
VCL
TObject->ClassName() 方法
直接返回该VCL 组件的类型
typeid(*Sender).name
if(Sender->ClassNameIs("TPanel"))
((TPanel *)Sender)->Caption = "Panel";
if(Sender->ClassNameIs("TButton"))
((TButton *)Sender)->Caption = "Button";