Eventos Nexus: V7 versus V8
Maestro, maestro, los otros novicios dicen que oculto mi cobardía tras la disciplina de la contemplación del devenir, que con tanto esmero me habéis enseñado.
Nexus es devenir, pequeño saltamontes, y el devenir lleva al Nexus. Te aparta de aberraciones como el VB6 y te ilumina con la marcha de los cuatro. Pero recuerda siempre que te hablen de valor ¿es más cobarde el jabalí o el tigre…? Dooong. Pero… ¿a dónde vas?… Si solo me traen una escupidera de bronce que compré en “ivai”…
En el primer y cuarto artículo de la serie que nos introducía a la programación de dlls de terceros en Nexus…
…hablemos ahora de las diferencias entre la versión 7 y la nueva 8 de Nexus en lo referente a las dlls de terceros.
Principalmente tenemos diferencias en dos apartados, Maestros e Impresión.
Maestros
En versión 7
La signatura de los eventos (la signatura en C# la podéis encontrar en el artículo original) es la siguiente:
AntesDeGuardarMaestro: function(Tabla: String; Datos: Variant): Boolean; stdcall; AntesDeGuardarMaestroV2: function(Tabla: String; Datos: Variant; Estado:Integer): Boolean; stdcall; DespuesDeGuardarMaestro: procedure(Tabla: String; Datos: Variant); stdcall; DespuesDeGuardarMaestroV2: procedure(Tabla: String; Datos: Variant; Estado:Integer); stdcall;
Aquí hubo una omisión en su día. Aunque están definidos los eventos AntesDeGuardarMaestroV2 y DespuesDeGuardarMaestroV2, estos NO se llaman.
Y recordemos que el parámetro Datos, en ambos casos, es de tipo Registro.
En versión 8
AntesDeGuardarMaestro: function(Tabla: String; Datos: Variant): Boolean; stdcall; AntesDeGuardarMaestroV2: function(Tabla: String; var Datos: Variant; Estado:Integer): Boolean; stdcall; DespuesDeGuardarMaestro: procedure(Tabla: String; Datos: Variant); stdcall; DespuesDeGuardarMaestroV2: procedure(Tabla: String; Datos: Variant; Estado:Integer); stdcall;
Diferencias con la versión 7
- En el caso de los eventos AntesDeGuardarMaestro yAntesDeGuardarMaestroV2, Datos recoge un Dataset (con un único registro), mientras que anteriormente era un Registro.
- Al contrario de lo que pasa en versión 7, los eventos AntesDeGuardarMaestroV2 y DespuesDeGuardarMaestroV2, SÍ se llaman.
- Y finalmente, el evento AntesDeGuardarMaestroV2 permite la modificación de los valores del maestro que se guarda. Nota, al usar este evento se penaliza ligeramente el guardado de los maestros, ya que Nexus debe comprobar si se han producido cambios en los datos pasados a la dll para aplicarlos a los campos correspondientes del maestro que trata de grabar.
Impresión
En el artículo Impresión: Men at work hablamos de un par de eventos que permitían interceptar la llamada a los informes de nexus para lanzar los nuestros (o realizar formateos diligentes de máquinas rebeldes). Se comentó que solo estaban disponibles para Delphi (o lenguajes que generen dlls en código nativo win32).
Por fin, el equipo de desarrollo ha ampliado la implementación de ambas llamadas para permitir su uso desde lenguajes que generen objetos COM (.NET [C#, VB.NET], VB6, etc…).
La signatura en .NET es la siguiente (ejemplo en C#):
bool EsListadoExterno(string IdListado); bool HacerListado(string IdListado, object Parametros);
El comportamiento y los parámetros, como se comentaron en dicho artículo. Solo recordar que en Parametros recibimos una estructura (similar al Registro), pero con la composición que allí se indicaba.
Esto será a partir de la versión 7.0.0I en adelante (8 inclusive, claro, o builds posteriores para los impacientes).
Y eso es todo, por el momento. V8, como si de un formula uno se tratara, está en continuo desarrollo y esto puede traer nuevas mejoras que nos ayuden en nuestros desarrollos a medida.
Pequeño saltamontes, deja de espantar moscas en esa obscura esquina y ven a mi habitación. Te voy a mostrar un truco muy interesante que te va a dar gustirrinín con una cuerda de nailon y un armario…
P.D. Este artículo se escribió cuando era joven. El OWI ha tardado en revisarlo.
Publicado el julio 29, 2009 en Desarrolladores, Distribuidores y etiquetado en .net, c#, delphi, dll terceros. Guarda el enlace permanente. Dejar un comentario.
Dejar un comentario