Página 1 de 1

Duda eventos Xailer

Publicado: Jue Ene 14, 2021 8:44 pm
por buzonjmartial
Buenas tardes,

Necesitaría saber un poco más, como funcionan los eventos en xailer.

Querría saber qué tipo de datos son, porque con valtype( oBrw:onChange) por ejemplo, me devuelve "U". Es para por ejemplo, guardar su contenido en una variable y más tarde, volverlo a asignar.
Otra cosa que no sé como hacer, es desactivarlos y activarlos cuando quiera. Hay partes de la aplicación, en la que quiero modificar un Browse por ejemplo, y no quiero que esté llamando continuamente al onChange hasta que yo lo decida.

Si me podéis echar una mano, os lo agradecería.

Un Saludo,
Joaquín Martínez

Re: Duda eventos Xailer

Publicado: Jue Ene 14, 2021 9:11 pm
por jfgimenez
Joaquín,

los eventos son un tipo de dato especial, que sólo se pueden asignar y ejecutar. No se pueden leer, por lo tanto lo que mencionas de leer su valor para guardarlo no funciona. Es más, cuando pones ValType( oBrw:OnChange ), en realidad estás disparando el evento, y el resultado es el que se está evaluando con valtype(). Te devuelve "U" porque seguramente terminas el evento con RETURN Nil

Para lo que comentas de controlar el OnChange, tienes dos opciones:

1) Asignar Nil al evento para desactivarlo y volver a asignarlo cuando quieras que vuelva a funcionar

2) Dentro del evento, controlar con un IF/ENDIF el código que quieres que se ejecute o no en cada momento

Re: Duda eventos Xailer

Publicado: Vie Ene 15, 2021 8:40 am
por buzonjmartial
Buenos días Jose,

Podría hacer lo de asignarle NIL, pero el problema está en que no puedo leer el valor que tenía, para cuando necesite activarlo de nuevo, asignarle ese valor.

Estaría bien implementar en Xailer una manera de activarlo/desactivarlo, tipo onChange:lenabled := T/F

Gracias,

Re: Duda eventos Xailer

Publicado: Mar Ene 19, 2021 6:50 pm
por jfgimenez
Joaquín,

perdona el retraso. No es posible lo que pides. El sistema de eventos de Xailer se diseño así precísamente por su rendimiento.

No obstante, podrías enviar el evento a un método o función tuya y decidir ahí qué haces. P.ej., puedes sobrecargar la clase y añadir la propiedad lFireOnChange, y en el código del evento comprobar su valor para ejecutar o no el código correspondiente. Incluso podrías hacer que el código del evento ejecute un bloque de código que esté guardado en :Cargo o en otro sitio y meter en ese bloque de código lo que quieras hacer.

En definitiva, hay varias formas de enfocarlo, pero lo que no se puede cambiar es el comportamiento de los eventos en Xailer. Si intentáramos modificarlo nos cargaríamos todas las ventajas que tiene y que nos llevaron a hacerlo así.

Re: Duda eventos Xailer

Publicado: Mié Ene 20, 2021 1:39 pm
por buzonjmartial
Gracias Jose,

Ya implemento otra de las soluciones posibles.