Me pregunto si DWScript admite el uso de un método de secuencia de comandos como un controlador de eventos para un control en un formulario Delphi. Por ejemplo, quiero vincular un evento TButton OnClick a un método que existe en el script.Delphi Web Script (DWScript) vincula un método de secuencia de comandos a un evento de control externo
Puedo hacer esto con el motor de script RemObjects Delphi llamando a GetProcMethod que devuelve un objeto TMethod. Luego uso SetMethodProp para asignar el método de script al evento OnClick de un botón.
procedure LinkMethod(SourceMethodName: String; Instance: TObject; ScriptMethodName: String);
var
ScriptMethod: TMethod;
begin
ScriptMethod := ScriptEngine.GetProcMethod(ScripMethodName);
SetMethodProp(Instance, SourceMethodName, ScriptMethod);
end;
Me gustaría hacer esto en DWScript en lugar del motor de scripts Rem Objects ya que hace otras cosas que necesito.
Gracias por eso. Lamentablemente, sin embargo, no sabré el nombre del evento de los parámetros necesarios hasta el tiempo de ejecución. RemObjects maneja la interceptación de la llamada al evento y el reenvío de los parámetros al controlador de eventos con guiones. De esta forma, no necesita saber nada sobre el método invocado en tiempo de compilación. Esperaba que DWS hiciera algo como esto. –
No está hecho en este momento porque DWScript está destinado a ser completamente sandboxable y apunta a la seguridad, el enfoque que utiliza RemObject provocará daños en la memoria o fallas si hay una falta de coincidencia entre los parámetros. El RTTI ha progresado un poco en eso, pero seguirá siendo vulnerable a fugas de memoria o AV, ya que no hay forma de automatizar la administración de memoria para eventos Delphi. Si alguien puede vivir con esas limitaciones y publicar código de apoyo, lo integraré ... con avisos de "precaución" apropiados ;-) –