In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Definicion de evento

Foro público de Xailer en español
Responder
Paco Garcia
Mensajes: 17
Registrado: Vie Nov 05, 2004 3:15 pm

Definicion de evento

Mensaje por Paco Garcia »

Hola.
Cuando pregunto en el codigo if oBtn:OnClick != nil lo que se me produce
es que se ejecuta el evento.
¿Hay alguna forma de preguntar si OnClick está definido sin que se ejecute?
Gracias
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9441
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Definicion de evento

Mensaje por ignacio »

Paco,
Utiliza el método TComponent:EventAssigned( cEvento )
Un saludo
--
Ignacio Ortiz de Zúñiga
Xailer support / Soporte de Xailer
http://www.xailer.com
http://www.xailer.info
"Paco Garcia" <paco@canalfive.com> escribió en el mensaje
news:49d46667$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>
> Hola.
> Cuando pregunto en el codigo if oBtn:OnClick != nil lo que se me produce
> es que se ejecuta el evento.
> ¿Hay alguna forma de preguntar si OnClick está definido sin que se
> ejecute?
> Gracias
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

Definicion de evento

Mensaje por jose.luis »

Paco,
Hay un método de tComponent que se llama Eventassigned.
IF !::EventAssigned("OnClick")
....
ELSE
....
ENDIF
Saludos,
José Luis Capel
"Paco Garcia" <paco@canalfive.com> escribió en el mensaje
news:49d46667$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>
> Hola.
> Cuando pregunto en el codigo if oBtn:OnClick != nil lo que se me produce
> es que se ejecuta el evento.
> ¿Hay alguna forma de preguntar si OnClick está definido sin que se
> ejecute?
> Gracias
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Definicion de evento

Mensaje por jfgimenez »

Paco,
> Cuando pregunto en el codigo if oBtn:OnClick != nil lo que se me produce
> es que se ejecuta el evento.
> ¿Hay alguna forma de preguntar si OnClick está definido sin que se
> ejecute?
Ya te han contestado, pero me gustaría añadir una cosa: es mejor llamar
siempre al evento y listo. En Xailer, llamar a un evento que no está
asignado no produce ningún error. Es más, es más rápido llamarlo y dejar que
no haga nada, que intentar leer si está asignado.
Y para terminar, en Xailer tenemos una especie de convenio con respecto a
cómo tienen que funcionar los eventos desde las clases, y es que si un
evento retorna Nil (y cuando no está asignado siempre retorna Nil), entonces
la clase puede realizar alguna acción por defecto. Pero si lo que retorna es
distinto de Nil, entonces la clase no debe hacer nada más, ya que se asume
que el evento ya ha hecho lo que tenía que hacer. Un ejemplo de esto es la
gestión del teclado (WMKeyDown y similares); si el evento (p.ej. OnKeyDown)
retorna Nil, entonces Xailer le pasa la tecla al control contenedor, que a
su vez se lo pasa a su contenedor, y así hasta que llega al formulario. Pero
si el evento retorna otro valor, entonces el proceso se para ahí, ya que se
entiende que el evento ya ha procesado todo lo que tenía que procesar. Esta
técnica permite incluso hacer algo en el evento y dejar además a Xailer
hacer más cosas.
Por supuesto no es una regla fija, ya que hay eventos y eventos, pero si es
una guía del comportamiento general de Xailer.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Responder