OJO con instrucción "Interfaz: ejecutar otro evento-slot"


(ame) #1

Buenos días,

 

Tened cuidado a la hora de usar esta instrucción, ya que si la llamáis desde un contexto de origen lista, el evento no se ejecutará.

El método que yo he empleado para salvar esto ha sido establecer una variable booleana a 1 en el momento en que necesitaba llamar al otro evento, y, una vez que me salgo del contexto origen lista y vuelvo a origen ficha, pregunto (if) por esta variable, y si vale 1 entonces llamo al evento, y ahora sí ya se ejecuta perfectamente.

A mí me ha llevado un par de horas darme cuenta de esto.

Por cierto, ya que he hablado sobre esta instrucción, añadir que me parece interesantísima, ya que fragmentos de código que tengamos comunes en todos los eventos que tenemos en un formulario, podemos crear un evento aparte con este trozo de código que se repite, y en los demás eventos eliminamos la parte del código común y la reemplazamos por la llamada al evento.

Esto sería una buena aplicación del concepto de modularidad de los lenguajes de programación tradicionales, llevado al mundo de Velneo. Así tenemos nuestros procesos/eventos más limpios y fáciles de mantener.

 

Un saludo.

 

José Luis.

 

 

 


([N1] Pepeto) #2

La verdad es que si que es muy interesante y util,

yo la he utilizado mucho desde que aparecio, y he limpiado el codigo enormemente,

y me ha funcionado siempre, pero ahora que lo dices, revisando los

objetos donde la he utilizado, y todos tienen origen Ficha,

asi que, no puedo confirmar lo que dices, pero si el origen es ficha, funciona y de coña.

un saludo.

José


([N4] velavisual) #3

@ame

 

Gracias por la info.

 





(ame) #4

Añado otra advertencia respecto a esta instrucción de evento. Realmente es más una cuestión lógica que técnica.

Cuidado al seleccionar el evento, pues si seleccionáis el mismo evento en el que estáis, es decir, en el evento "Evento" ponemos la instrucción de ejecutar otro evento y seleccionamos precisamente el mismo evento "Evento". Evidentemente esto provocará un bucle infinito que hará salir a vClient de manera inmediata, quedándose enganches a las instancias.

No creo que a nadie le haga falta hacer esto, pero por si acaso os equivocáis y os pasa, que al menos lo tengáis en cuenta a la hora de depurar. Estaría bien que esto lo controlara el vDevelop, al igual que han hecho con las señales, que sólo aparecen las que tienen sentido dependiendo del objeto en el que nos encontramos. No obstante, podría (no estoy seguro) existir una posibilidad en que llamarse un evento a sí mismo resultara interesante, pero de momento no se me ha presentado una situación real en la que tuviera que implementar un procedimiento recursivo.

Ah, dicho sea de paso, esto también es aplicable a los procesos.

 

Saludos.

 

José Luis.