Página 1 de 1

Problema con disparo de eventos

Publicado: Jue Ene 17, 2008 12:22 pm
por jmartial
Hola,
Necesito hacer lo siguiente:
En una Timage mostrar una foto, al hacer click cambiarla y al soltar
mostrar otra vez la 1ª.
Lo que serí­a conmutar entre fotos con un click.
Lo he conseguido usando el evento onLbuttonDown y onLbuttonUp.
Pero tiene un pequeño fallo. Si hago la siguiente secuencia
"Pulso - Suelto - Pulso" con el botón izquierdo del ratón
Si se hace lento conmuta bien, pero si se hace rápido no conmuta el
último click pulsado.
He probado en un botón y funciona correcto, pero por ejemplo en un
Header de la clase browse lo hace mal como comento.
¿Qué forma existe de hacer la conmutación sin este fallo de
sincronización cuando se cliquea muy rápido?
Un Saludo,
Joaquí­n

Problema con disparo de eventos

Publicado: Sab Ene 19, 2008 8:43 pm
por ignacio
Joaquin,
Un pequeño ejemplo que muestre el problema por favor. Gracias de antemano.
Un saludo
--
Ignacio Ortiz de Zúñiga
[Soporte Xailer]
"Joaquín Martínez" <jmartial@interbook.net> escribió en el mensaje
news:478f3a75$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Hola,
>
> Necesito hacer lo siguiente:
>
> En una Timage mostrar una foto, al hacer click cambiarla y al soltar
> mostrar otra vez la 1ª.
> Lo que sería conmutar entre fotos con un click.
>
> Lo he conseguido usando el evento onLbuttonDown y onLbuttonUp.
>
> Pero tiene un pequeño fallo. Si hago la siguiente secuencia
>
> "Pulso - Suelto - Pulso" con el botón izquierdo del ratón
>
> Si se hace lento conmuta bien, pero si se hace rápido no conmuta el último
> click pulsado.
>
> He probado en un botón y funciona correcto, pero por ejemplo en un Header
> de la clase browse lo hace mal como comento.
>
>
> ¿Qué forma existe de hacer la conmutación sin este fallo de sincronización
> cuando se cliquea muy rápido?
>
>
> Un Saludo,
> Joaquín

Problema con disparo de eventos

Publicado: Sab Ene 19, 2008 10:34 pm
por jmartial
Ignacio,
En cualquier browse que tengas hecho en xailer, en la cabecera haz lo
siguiente:
"Pulso - Suelto - Pulso" con el botón izquierdo del ratón
Si se hace lento conmuta bien, pero si se hace rápido no conmuta el
último
click pulsado.
Un Saludo,
Joaquí­n
Ignacio Ortiz de Zúñiga escribió:
> Joaquin,
>
> Un pequeño ejemplo que muestre el problema por favor. Gracias de antemano.
>
> Un saludo
>

Problema con disparo de eventos

Publicado: Dom Ene 20, 2008 9:25 pm
por jfgimenez
Joaquín,
> En cualquier browse que tengas hecho en xailer, en la cabecera haz lo
> siguiente:
>
> "Pulso - Suelto - Pulso" con el botón izquierdo del ratón
>
> Si se hace lento conmuta bien, pero si se hace rápido no conmuta el
> último
> click pulsado.
Eso se produce porque windows genera un mensaje de 'doble click' en vez de
'click' cuando se pulsa el botón del ratón dos veces rápido. Es lo correcto,
y no podemos ni debemos cambiarlo. Lo que puedes hacer es capturar también
OnDlbClick y tratarlo como si fuera un OnClick
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info

Problema con disparo de eventos

Publicado: Dom Ene 20, 2008 10:55 pm
por jmartial
Jose,
La otra opción para no usar este método, serí­a, saber al hacer click en
un botón que control tení­a el foco y además que no lo perdiera por
clickear el botón.
No he visto el modo de hacerlo. ¿Existe alguna manera?
Otra cosa, si uso lo que planteas, ¿ Nunca saltará 2 veces, una por el
doble click y otra por el click normal?
Un Saludo y gracias,
Joaquí­n
Jose F. Gimenez escribió:
> Joaquí­n,
>
>> En cualquier browse que tengas hecho en xailer, en la cabecera haz lo
>> siguiente:
>>
>> "Pulso - Suelto - Pulso" con el botón izquierdo del ratón
>>
>> Si se hace lento conmuta bien, pero si se hace rápido no conmuta el
>> último
>> click pulsado.
>
> Eso se produce porque windows genera un mensaje de 'doble click' en vez de
> 'click' cuando se pulsa el botón del ratón dos veces rápido. Es lo correcto,
> y no podemos ni debemos cambiarlo. Lo que puedes hacer es capturar también
> OnDlbClick y tratarlo como si fuera un OnClick
>

Problema con disparo de eventos

Publicado: Lun Ene 21, 2008 10:45 am
por jfgimenez
Joaquín,
> La otra opción para no usar este método, sería, saber al hacer click en un
> botón que control tenía el foco y además que no lo perdiera por clickear
> el botón.
>
> No he visto el modo de hacerlo. ¿Existe alguna manera?
Podrías usar el evento OnChangeFocus del formulario.
> Otra cosa, si uso lo que planteas, ¿ Nunca saltará 2 veces, una por el
> doble click y otra por el click normal?
No, la primera vez que haces click, windows genera un evento 'click', y la
segunda vez genera un evento 'doble click', pero no se llega a generar el
'click'. Es decir, cuando pulsas 2 veces seguidas, recibes en realidad dos
eventos, el primero 'click' y el segundo 'doble click'.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info

Problema con disparo de eventos

Publicado: Lun Ene 21, 2008 1:48 pm
por jmartial
Jose Gracias,
Pero respecto a tu 1ª respuesta "Podrí­as usar el evento OnChangeFocus
del formulario", no entiendo en qué consiste.
Me explico:
Recibo el foco en el botón, ¿ cómo uso OnChangeFocus para saber el
control donde estaba el foco antes del click?
Un Saludo,
Joaquí­n
Jose F. Gimenez escribió:
> Joaquí­n,
>
>> La otra opción para no usar este método, serí­a, saber al hacer click en un
>> botón que control tení­a el foco y además que no lo perdiera por clickear
>> el botón.
>>
>> No he visto el modo de hacerlo. ¿Existe alguna manera?
>
> Podrí­as usar el evento OnChangeFocus del formulario.
>
>
>> Otra cosa, si uso lo que planteas, ¿ Nunca saltará 2 veces, una por el
>> doble click y otra por el click normal?
>
> No, la primera vez que haces click, windows genera un evento 'click', y la
> segunda vez genera un evento 'doble click', pero no se llega a generar el
> 'click'. Es decir, cuando pulsas 2 veces seguidas, recibes en realidad dos
> eventos, el primero 'click' y el segundo 'doble click'.
>

Problema con disparo de eventos

Publicado: Lun Ene 21, 2008 6:44 pm
por jfgimenez
Joaquín,
> Pero respecto a tu 1ª respuesta "Podrías usar el evento OnChangeFocus del
> formulario", no entiendo en qué consiste.
>
> Me explico:
>
> Recibo el foco en el botón, ¿ cómo uso OnChangeFocus para saber el
> control donde estaba el foco antes del click?
Crea una data 'oLastFocusedControl' en el formulario, y escribe el evento
más o menos así:
METHOD FormChangeFocus( oSender, oFrom, oTo ) CLASS TForm1
::oLastFocusedControl := oFrom
RETURN Nil
Y después, ::oActiveControl es el control que tiene el foco, y
::oLastFocusedControl es el que lo tenía antes.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info