Delphi XE增强的RTTI妙用--动态创建包中的窗口类

在Delphi XE中,借助增强的RTTI功能,无需在form单元文件中手动注册类,即可在运行时动态创建package中的窗口类。通过TRttiContext和TRttiPackage,可以查找指定package的类并实例化,实现窗口的创建和显示。
摘要由CSDN通过智能技术生成

以前要在运行时创建package中的form类,必须要在form单元文件中这样注册类:

Initialization
  RegisterClass(TForm3);
Finalization
  UnRegisterClass(TForm3);

 

然后在调用模块中,通过FindClass或GetClass函数返回一个TPersistentClass,再通过此类引用创建窗口类:

  AClass := GetClass(ClassName);
  aForm := TCustomForm(AClass.Create).Create(Application);

 

 

现在,通过XE中增强的RTTI,也可以完成同样的工作。

首先,package中的申明form的单元文件中,不再需要调用RegisterClass注册窗口类,因为窗口类的RTTI信息,已经在编译时写入到了二进制文件中。

在调用模块中,可以这样进行创建窗口类:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值