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;
就我个人而言,我会使用实例或函数而不是全局变量。
我已经注册了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;
就我个人而言,我会使用实例或函数而不是全局变量。