Para quien pueda interesar...
Así tengo funcionando la Clase... SOLO A FALTA de añadir la derivación del
evento OnChange...
CLASS TBrowse FROM xBrowse
PUBLISHED:
PROPERTY lChange INIT .T.
METHOD WMKeyDown( nKey, nFlags, hWnd )
METHOD WMKeyUp( nKey, nFlags, hWnd )
ENDCLASS
*
**
METHOD WMKeyDown( nKey, nFlags, hWnd ) CLASS TBrowse
::lChange := !(nKey == VK_UP .or. nKey == VK_DOWN .or. nKey == VK_PRIOR
..or. nKey == VK_NEXT)
RETURN Super:WMKeyDown( nKey, nFlags, hWnd )
*
**
METHOD WMKeyUp( nKey, nFlags, hWnd ) CLASS TBrowse
If !::lChange()
::lChange := .T.
::OnChange()
EndIf
RETURN Super:WMKeyUp( nKey, nFlags, hWnd )
Y... a falta del evento WMChange...
en cada Browse que quiero "refrescar" sólo al soltar la tecla de cambio de
registro...
en el evento OnChange()
If !::oMiBrowse:lChange
Return Nil
EndIf
....
Por esta parte tendría YA totalmente arreglado el problema de "refresco
contíuo" en OnChange de Browse y múltiples "refrescos" por interacción.
Como Fredy...
Ahora a ver si puede hacerse algo para el cambio de registros PERO por la
barra Scroll.
Por lo que he notado... no sólo és al pulsar el botón de la barra Scroll,
sinó también si pulsamos dentro de la barra, por lo que como dice Fredy, con
sólo disponer de la captura del OnButtonDown y OnButtonUp de la barra scroll
del Browse... habría mas que suficiente, aplicando la misma téctica.
Un Saludo,
Xevi.
"Xevi" <
xevicomas@gmail.com> escribió en el mensaje
news:45b671fb$[email=
1@news.xailer.com...]
1@news.xailer.com...[/email]
> Venga... una ayudita !!!
> Sólo me falta el método OnChange... los eventos OnKeyDown y OnKeyUp
> funcionan perfectamente!!!
>
>
> CLASS TBrowse FROM xBrowse
> PUBLISHED:
> PROPERTY lChange INIT .T.
> METHOD WMKeyDown( nKey, nFlags, hWnd )
> METHOD WMKeyUp( nKey, nFlags, hWnd )
> METHOD WMChange( lBookMarkChanged, hWnd ) //No se como derivar este
> evento
> ENDCLASS
> *
> **
> METHOD WMKeyDown( nKey, nFlags, hWnd ) CLASS TBrowse
> ::lChange := .F.
> RETURN Super:WMKeyDown( nKey, nFlags, hWnd )
> *
> **
> METHOD WMKeyUp( nKey, nFlags, hWnd ) CLASS TBrowse
> ::lChange := .T.
> RETURN Super:WMKeyUp( nKey, nFlags, hWnd )
> *
> **
> METHOD WMChange( lBookMarkChanged, hWnd ) CLASS TBrowse
> MSGINFO( "Change" ) //Aqui NUNCA llega!!!
> RETURN Super:WMChange( lBookMarkChanged, hWnd )
>
>
> Un Saludo,
> Xevi.
>
>
> "Xevi" <
xevicomas@gmail.com> escribió en el mensaje
> news:45b65fca$[email=
1@news.xailer.com...]
1@news.xailer.com...[/email]
> Ignacio,
>
> Aprovechando la incorporación de la detección de las teclas en OnKeyDown,
> por lo que hasta donde nosotros podemos llegar...
>
> Me funciona correctamente agregando una data a mi Form y activando o no el
> OnChange del Browse detectando cuando pulso y cuando suelto... pero
> desearía que formara parte de MI CLASE TBROWSE derivada... y pido vuestra
> ayuda y/o colaboración...
>
> No se como se llama el evento OnChange, pues de lo que se trataría es de
> no lanzar OnChange hasta que suelte la tecla.
>
> CLASS TBrowse FROM xBrowse
> PUBLISHED:
> Data lChange INIT .F.
>
> METHOD WMKeyDown( nKey, nFlags, hWnd )
> METHOD WMKeyUp( nKey, nFlags, hWnd )
> METHOD WMChange( oSender, lBookMarkChanged )
> ENDCLASS
> *
> **
> METHOD WMKeyDown( nKey, nFlags, hWnd ) CLASS TBrowse
> ::lChange := .T.
> RETURN 0
> *
> **
> METHOD WMKeyUp( nKey, nFlags, hWnd ) CLASS TBrowse
> ::lChange := .F.
> RETURN 0
> *
> **
> METHOD WMChange( oSender, lBookMarkChanged ) CLASS TBrowse
> If !::lChange
> Super:WMChange( oSender, lBookMarkChanged )
> EndIf
> RETURN 0
>
> Espero que se entienda mi intención.
>
> Gracias.
>
> Un Saludo,
> Xevi.
>
>
> "Ignacio Ortiz de Zúñiga" <
NoName@xailer.com> escribió en el mensaje
> news:45b5daf8$[email=
1@news.xailer.com...]
1@news.xailer.com...[/email]
>> Fredy,
>>
>> Arreglado. Adjunto el módulo corregido.
>>
>> Un saludo
>>
>> --
>> Ignacio Ortiz de Zúñiga
>>
http://www.xailer.com
>>
>>
>> "Fredy" <
fredy@aglsl.com> escribió en el mensaje
>> news:[email=
a20b86f3202d8c90ca0cddb8804@news.xailer.com...]
a20b86f3202d8c90ca0cddb8804@news.xailer.com...[/email]
>> Hola,
>>
>> Otra cosa que me pasa:
>>
>> Las teclas flechas de cursor no me disparan el onkeydown, pero en cambio
>> sí
>> que disparan el onkeyup
>>
>>
>> En el ejemplo que adjunto se ve cómo onkeydown funciona para todas las
>> teclas salvo las del cursor, avance y retroceso de página, inicio y final
>>
>> ¿alguna razón para ello?
>>
>> Un saludico
>> Fredy
>>
>>
>>
>
>