2016-06-07 1 views
1

Я зарегистрировал класс TFORM и его свойство 'заголовок', а затем зарегистрировать глобальную переменную:Веб-скрипт Delphi: как вызвать свойство глобального TForm объекта в скрипте?

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)

+0

Вы пробовали varByRef? –

ответ

1

Возвращаемое значение должно быть представлением сценария вашего объекта; IScriptObj.

следующие работы для меня:

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

Лично я хотел бы использовать экземпляр или функцию вместо глобальной переменной.