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.

Problema con disparo de eventos

Foro de Xailer profesional en español
Responder
jmartial
Mensajes: 397
Registrado: Vie May 20, 2005 8:53 pm

Problema con disparo de eventos

Mensaje 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
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9253
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Problema con disparo de eventos

Mensaje 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
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
jmartial
Mensajes: 397
Registrado: Vie May 20, 2005 8:53 pm

Problema con disparo de eventos

Mensaje 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
>
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Problema con disparo de eventos

Mensaje 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
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
jmartial
Mensajes: 397
Registrado: Vie May 20, 2005 8:53 pm

Problema con disparo de eventos

Mensaje 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
>
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Problema con disparo de eventos

Mensaje 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
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
jmartial
Mensajes: 397
Registrado: Vie May 20, 2005 8:53 pm

Problema con disparo de eventos

Mensaje 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'.
>
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Problema con disparo de eventos

Mensaje 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
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Responder