PC SOFT

AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente. Haga clic aquí para ver la versión en inglés.
  • Vocabulario
  • ¿Cómo usar un delegado de.Net con WINDEV?
  • Cómo Process los eventos .NET
  • Consejo
  • Varios
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadApple WatchUniversal Windows 10 App
Otros
Procedimientos almacenados
DotNetDelegate( Función)
Inicializa un delegado.NET. Este delegado permitirá a .NET llamar de nuevo a un WLanguage Procedure o método en caso de eventos o "callbacks".
clOwn is OwnEvent
clOwn:add_MyEvent(DotNetDelegate("MyHandler", "EventHandler<MyEventArgument>"))
clOwn:Trigger("Hello")
PROCÉDURE MyHandler(src, args)
Trace(args:Message)
Sintaxis
<Result> = DotNetDelegate(<WLanguage procedure> , <Type of Delegate>)
<Result>: Objeto .NET
Net del tipo de participante.
<WLanguage procedure>: Nombre de Procedure
Nombre del WLanguage Procedure o método para llamar. Este procedimiento tiene el siguiente formato:

PROCEDURE <Procedure Name>(Src, Args)
donde:
  • Src corresponde al objeto .NET que envía el Event
  • Args corresponde al objeto .NET utilizado como parámetro del Event.
<Type of Delegate>: Cadena de caracteres
Nombre de la clase del delegado a crear. Este parámetro no debe corresponder a una Variable.
Observaciones

Vocabulario

  • Delegate: Se utiliza para gestionar una devolución de llamada. Es del tipo "función. Define el prototipo de la función. El delegado se inicializa con una función.NET correspondiente al prototipo. El delegado es el equivalente.NET del puntero de función en C. Varios métodos pueden ser associated a un mismo delegado : todos ellos se llamarán.
    Atención : en la documentación.NET, este término también puede designar los "métodos delegados", es decir, los métodos associated con un delegado.
  • manipulador: Tipo particular de delegado diseñado específicamente para el procesamiento de eventos.
  • Event: Un Event puede ser associated con uno o más manejadores. Cuando se activa el Event, se llama a todos los manipuladores asociados con este Event.

¿Cómo usar un delegado de.Net con WINDEV?

Para utilizar un delegado de .Net, usted debe:
  1. Encuentre el delegado en la lista de clases.NET
    El delegado es una clase.NET en sí misma. El nombre del delegado debe ser conocido (ver la documentación de su ensamblaje.NET).
  2. Definir los parámetros del participante
    El delegado define un método de invocación. El WLanguage Procedure associated con el delegado debe tener los mismos parámetros.
  3. Asociar el WLanguage Procedure con el delegado
    El delegado se utiliza en una clase.NET. Esta clase posee métodos usados para agregar o quitar un "método de delegado" a/desde el delegado..
    Consulte la documentación sobre su ensamblaje.NET para conocer los nombres de estos métodos.
Ejemplo:
  • Nombre de la clase que utiliza el delegado  : CUseDelegate
  • Nombre de la clase del delegado: CUseDelegate.CpfMyDelegate
  • Prototipo del método Invoke de la clase CUseDelegate.CpfMyDelegate : Invocar (entero)
  • Prototipo del método WLanguage correspondiente : Procedure MyCallbackWL(local i is int)
    // Instantiate a class that owns a delegate
    clUse is CUseDelegate

    // Add a "delegate method" (WL callback) to the delegate
    clUse:AddDelegate(DotNetDelegate("MyWLCallback", ...
    "CUseDelegate.CpfMyDelegate"))

    // Provoke the use of the delegate by the .NET class
    clUse:UseDelegate()

Cómo Process los eventos .NET

Para Process los eventos de .Net, debes:
1. Encuentra el Event.
El Event es miembro de una clase de .NET. Este miembro tiene un nombre y un tipo. El tipo define el tipo de gestor que se puede asociar a la Event. El nombre se usa para encontrar dos métodos:
  • "add_<Event nombre>"
  • "remove_<Event nombre>"
Estos dos métodos se utilizan para asociar y disociar uno o varios manipuladores con/de un Event. El tipo de parámetro para estos dos métodos es el nombre del tipo de manejador.
Ejemplo: La clase OwnEvent contiene un evento MyEvent de tipo EventHandler<MyEventArgument>.
2. Recuperar a un manipulador.
Se puede recuperar un manejador con DotNetDelegate:
  • El primer parámetro es el nombre del WLanguage Procedure
  • El segundo parámetro es el nombre de la clase del tipo de handler. Este nombre se puede recuperar mediante el nombre del tipo de parámetros de los métodos "add_xxx" y "remove_xxx".
Ejemplo: El WLanguage Procedure tiene el siguiente formato:
PROCÉDURE MyHandler(src, args)
Trace(args:Message)
src es un objeto.NET de tipo OwnEvent, args es un objeto.NET de tipo MyEventArgument
3. Asociar el manejador con el Event
Para asociar el handler con el Event, todo lo que tienes que hacer es llamar al método "add_<Event Name> en el objeto que posee el Event".
Ejemplo:
clOwn:add_MyEvent(DotNetDelegate("MyHandler", "EventHandler<MyEventArgument>"))
4. Disparar el Event
En nuestro ejemplo, la llamada a clOwn:Trigger desencadena el Event.

Consejo

En el WLanguage Procedure, puedes:
  • utilizar los métodos asociados a los parámetros de la Procedure. Sin embargo, la finalización no está disponible.
  • definir un objeto dinámico y asignarle el parámetro solicitado. La terminación está disponible para el objeto.
Estos dos métodos se utilizan en el ejemplo detallado.

Varios

  • Esta función no se puede utilizar en la compilación dinámica.
  • El lenguaje WLanguage Procedure se ejecuta en un thread secundario. En cada llamada, el modo HFSQL utilizado es una copy ligera del contexto HFSQL. El contexto se destruye una vez ejecutada la Procedure.
Componente: wd270vm.dll
Ver también
Versión mínima requerida
  • Versión 12
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario