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

时间:2016-06-07 09:56:22

标签: delphi dwscript

我已经注册了TForm类及其'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显示异常:

  

界面不受支持。

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

1 个答案:

答案 0 :(得分:1)

返回值应该是对象的脚本表示; IScriptObj

以下适用于我:

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

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

相关问题