Delphi Web 脚本:如何在脚本中调用全局 TForm 对象的 属性?

Delphi Web Script: How to call global TForm object's property in script?

我已经注册了TFormclass和它的'caption'属性,然后我注册了一个全局变量:

NewGlobal := DwsUnit.Variables.Add;
NewGlobal.Name := 'MainForm';
NewGlobal.DataType := 'TForm';
NewGlobal.OnReadVar := GlobalReadProc;

GlobalReadProc 代码:

GlobalReadProc(Info: TProgramInfo;var Value: Variant);
begin
    TVarData(Value).VType := varUnknown;
    IUnknown(TVarData(Value).VUnknown) := TForm(Form1);
end;

在脚本中我调用了 MainForm 变量 属性

MainForm.Caption := ''DWS Script in work'';

DWScript 显示异常:

interface not supported.

我做错了什么? (我使用 IUnknown 是因为我在 VarCopySafe 过程中看到了类型转换,并且当 VType 不是 varUnknown 时我得到一个异常)

return 值应该是您的对象的脚本表示;一个IScriptObj.

以下对我有用:

GlobalReadProc(ProgramInfo: TProgramInfo; var Value: Variant);
var
  Info: IInfo;
begin
  Info := ProgramInfo.ResultVars.GetConstructor('Create', Form1).Call;
  Value := Info.ScriptObj;
end;

就我个人而言,我会使用实例或函数而不是全局变量。