delphi plugins callback jvcl

Cómo implementar un método de devolución de llamada dentro de DLL(Delphi/TJVPluginManager+TJvPlugin)



plugins callback (1)

El concepto básico es bastante simple. Un método de devolución de llamada es un puntero a un método que pasa a algún código para que pueda llamarlo en un momento específico para permitirle personalizar su comportamiento. Si tiene alguna experiencia con Delphi, ya está familiarizado con los métodos de devolución de llamada con un nombre diferente: "controladores de eventos".

Pruebe algo como esto en su complemento:

type TMyEvent = procedure(param1, param2, param3: integer) of object; procedure AddCallback(callback: TMyEvent);

Este procedimiento llevaría el puntero del método TMyEvent pasado y lo almacenará en algún lugar. Digamos en una variable llamada FCallback. Cuando llegue el momento de llamar a tu aplicación, el código sería así:

if assigned(FCallback) then FCallback(param1, param2, param3);

Lo llamarías así desde tu aplicación cuando configures el complemento:

MyPlugin.AddCallback(self.callbackProc);

A veces tendrá que poner una @ delante de él (@ self.callbackProc) para que el compilador pueda decir que es un puntero a método y no una llamada a método, pero esto no siempre es necesario.

Estoy construyendo una aplicación que trabaja con complementos. Estoy usando el excelente marco de plugin JVCL. Primero comencé a usar el complemento del paquete. Funcionó como un amuleto, pero tenía un gran inconveniente: la necesidad de dar runtimes bpl (23Mo). Entonces cambio al plugin DLL.

Necesito llamar a un método (procedimiento que tiene 3 parámetros) desde una aplicación interna, pero no sé cómo hacerlo. OBones explicó en el grupo nuevo de Jedi que usa funciones de devolución de llamada, pero no tengo idea de cómo lograrlo.

¿Puede alguien amablemente explicarme o mejor, enviarme un ejemplo? Puede tomar la demostración JVCL 1SimplePlugin y actualizarla.

Gracias de antemano

BR

Stephane Wierzbicki