摘自RemObjects Wiki
本文演示如何在\Samples\Debug范例的RemObjects Pascal脚本中调用现有的Delphi类.将如下类加入到工程文件:
MyClass类是由Import工具打开的,并为我们生成了一个单元:
点击"Go"按钮并将生成的uPSI_MyClass.pas单元加入到工程文件.选择主窗体并生成OnCreate事件处理函数:
在Create事件中创建一个TPSImport_MyClass类的实例并将其加入到脚本引擎的插件列表中:
如果你要在多个工程中使用这个插件,可以将其导入包中安装后显示在控件面板上.
现在可以在脚本引擎中使用这个类了:
在脚本引擎中使用已存在的TmyClass类
也可以在脚本引擎中使用TmyClass类型的变量.首先在窗体类中添加成员FMyClass: TmyClass并实例化:
在脚本引擎的OnCompile事件中需要让引擎知道有一个新变量.有两种方式实现: AddRegisteredVariable 和AddRegisteredPtrVariable.区别在于AddRegisteredPtrVariable将会是变量直接被修改,因此如果你释放了变量并重新创建,脚本引擎将使用新建的那个变量. AddRegisteredPTRVariable有两个参数.一个名称和一个类型.将如下代码加入到脚本引擎的OnCompile事件中:
现在编译器已经知道这些变量的存在,但运行时脚本引擎还不知道变量的具体位置.未来让运行时知道,需要使用OnExecute事件. SetPointerToData方法可以将设置由AddRegisteredPTRVariable 加入到引擎的变量的值.第一个参数是变量的名称,第二个参数是变量实例的地址,第三个参数是变量类型(这里使用ce.FindNamedType('nameoftype')获取).
最终结果: