Página 1 de 1

Definicion de evento

Publicado: Jue Abr 02, 2009 9:16 am
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

Definicion de evento

Publicado: Jue Abr 02, 2009 9:39 am
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
>

Definicion de evento

Publicado: Jue Abr 02, 2009 9:46 am
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

Definicion de evento

Publicado: Vie Abr 03, 2009 8:41 pm
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