Page 1 of 1

Capturar tecla en xbrowse?

Posted: Wed Oct 21, 2020 4:36 pm
by FranciscoA
Amigos.
No logro capturar cuando se presionan las teclas VK_UP y VK_DOWN en xBrowse.

Esto no funciona:

Code: Select all

oBrw:bKeyDown  := { | nKey | if( nKey = VK_DOWN .or. nKey = VK_UP, MsgInfo(nKey), ) }
He visto infinidad de ejemplos en el foro, pero lo mismo... no funcionan.

Alguno puede postear un ejemplo funcional, o unicamente el codigo pertinente?
Gracias de antemano.

Re: Capturar tecla en xbrowse?

Posted: Wed Oct 21, 2020 7:24 pm
by cnavarro
Francisco, modifica el metodo asi

Code: Select all

METHOD KeyDown( nKey, nFlags ) CLASS TXBrowse

   local oCol
   local uRet

   if Valtype( ::bKeyDown ) = "B"
      uRet  := EVal( ::bKeyDown, nKey, nFlags, Self )  //, ::SelectedCol()
      if ValType( uRet ) == 'N' .and. uRet == 0
         return 0
      endif
   endif

   if ! ::lScreenUpdating
      return ::Super:KeyDown( nKey, nFlags )
   endif

   ::CloseMessage()

   do case
   case nKey == VK_ESCAPE

.../...
 
y cuando lo uses, podrás hacerlo así:

Code: Select all

    // Ejecuta el MsgInfo y después ejecutaría la accion por defecto de la tecla VK_DOWN o VK_UP
                             oBrw:bKeyDown := { | nKey | if( nKey = VK_DOWN .or. nKey = VK_UP, ( MsgInfo(nKey), 1 ) , ) }
 
o asi ( como ves, dependiendo de lo que devuelvas: 0 ó 1 )

Code: Select all

    // Ejecuta el MsgInfo y termina ( vuelve )
                             oBrw:bKeyDown := { | nKey | if( nKey = VK_DOWN .or. nKey = VK_UP, ( MsgInfo(nKey), 0 ) , ) }
 

Re: Capturar tecla en xbrowse?

Posted: Wed Oct 21, 2020 9:38 pm
by FranciscoA
Cristobal.
Trabajé en una copia de txBrowse.prg, y funciona bien, aunque tuve que omitirle la parte ::CloseMessage() porque daba error.
Muchas gracias.

Re: Capturar tecla en xbrowse?

Posted: Thu Oct 22, 2020 1:38 am
by cnavarro
Posiblemente ese método no existe en la clase que estás utilizando.
Saludos

Re: Capturar tecla en xbrowse?

Posted: Thu Oct 22, 2020 11:10 pm
by FranciscoA
Maestro.
Es correcto, En mi version de xbrowse no aparece.
Many thanks