Page 1 of 1
Asociar teclas a un xBrowse
Posted: Wed Sep 26, 2007 4:15 pm
by Mike Serra
Buenas Foro!, tengo este codigo asociado a un xbrowse:
Code: Select all
function press_on_browse(nKey,self)
msginfo(nkey)
do case
case nkey = VK_F2 .and. ::lInsertButton
::Insert()
case nkey = VK_F3 .and. ::lDeleteButton
::Delete()
case (nkey = VK_F4 .or. nKey = VK_RETURN) .and. ::lModifyButton
::Modify()
case nkey = VK_F5 .and. ::lSearchButton
::Search()
case nkey = VK_F6 .and. ::lPrintButton
::Print()
case nkey = VK_ESCAPE
::oContainer:End()
end case
return
Me funciona todo perfectamente menos la tecla ESCAPE, ¿sabeis que puede ser?
Muchas Gracias.
Posted: Wed Sep 26, 2007 4:17 pm
by Mike Serra
Se me ha olvidado comentaros que no es problema de VK_ESPAPE, ya que cuando pulso sobre la tecla ESCAPE, no se muestra nada en el msginfo.
SALUDOS
Posted: Wed Sep 26, 2007 5:31 pm
by karinha
CUAL ÉS LA VERSION DE TU FIVEWIN?
PROBASTES CON bKeyDown()??
Posted: Wed Sep 26, 2007 5:45 pm
by Mike Serra
Gracias Karina
es la FW 2.8 Octubre de 2006
Posted: Wed Sep 26, 2007 5:46 pm
by Mike Serra
la llamada a press_on_browse la realizo asi:
Code: Select all
::oBrowse:bKeydown:={|nkey|press_on_browse(nKey,self)}
Posted: Thu Sep 27, 2007 4:03 pm
by jacgsoft
Cuando presionas ESC se sale del Browse o se queda alli?
Si se sale del Browse entonces tienes que modificar el metodo KEYDOWN
de la clase XBROWSE
Posted: Fri Sep 28, 2007 11:25 am
by Mike Serra
Lo curioso es que no hace nada, es decir, si os fijais en la función del principio del post hay un msginfo(nkey), si pulso cualquier tecla me sale caracter ascii de la tecla pulsada, del F1, F2, F3, A, B, C, la que sea, pero si pulso ESCAPE no muestra nada.
Posted: Fri Sep 28, 2007 4:06 pm
by jacgsoft
fijate en el metodo KEYDOWN de la clase XBROWSE y entenderas porque. En mi caso tuve que modificarlo para poder captar todas las teclas sin excepcion.
Jaime
Posted: Fri Sep 28, 2007 4:28 pm
by Biel EA6DD
Revisando un poco el código, yo el metodo KeyDown de xBrowse lo veo bien. Claro está que si le añades CASE nKey==27 ..., conseguiras variar el comportamiento.
Pero en realidad el hecho de no evaluar bKeyDown, es debido a el metodo KeyDown de la clase control.
Allí si la tecla recibida es escape
Code: Select all
if nKey == VK_ESCAPE
:oWnd:KeyDown( nKey, nFlags )
return 0
mientras que si es otra tecla
Code: Select all
return Super:KeyDown( nKey, nFlags )
Supongo que habra algún motivo, que no alcanzo a ver, pero si quitas el if nKey== VK_ESCAPE, veras como si te evalua correctamente el codigo de bKeyDown.
::oWnd y Super no son el mismo objeto, y el code block bKeyDown esta asignado en Super.
Algun usuario mas experimentado, o Antonio directamente nos podra dar luz sobre el tema.
Posted: Sat Sep 29, 2007 5:30 am
by Mike Serra
Muchas Gracias a los 2 (Jaime y Gabriel). Esperaré noticias.