Hola gente,
¿Como detecto cuando el usuario ha oprimido las teclas de flecha arriba ó flecha abajo en un botón?
Gracias
Detectar flecha arriba, flecha abajo en un button
Re: Detectar flecha arriba, flecha abajo en un button
oBtn:bKeyDown := {|nKey| pulsa(nKey)}fleal wrote:Hola gente,
¿Como detecto cuando el usuario ha oprimido las teclas de flecha arriba ó flecha abajo en un botón?
Gracias
function pulsa(nkey)
? nKey
return .t.
Es al vuelo, espero te ayude
William, Morales
Saludos
méxico.sureste
Saludos
méxico.sureste
oBtn:bChange := {|| pulsa() }fleal wrote:Ya había probado a usar oBtn:bKeyDown y oBtn:bKeyChar. Las teclas no son detectadas.
Probe a usar oBtn:bLostFocus := {|nKey| msginfo(nKey)} pero regresa nil en flecha arriba, flecha abajo.
¿Alguna idea mas?
Gracias
FUNCTION pulsa()
IF GetKeyState(VK_UP)
? "Flecha arriba"
ELSEIF GetKeyState(VK_DOWN)
? "Flecha abajo"
ENDIF
RETURN .t.
William, Morales
Saludos
méxico.sureste
Saludos
méxico.sureste
William,
Lo resolví usando el VALID del botón,
REDEFINE BUTTON aBtns[1] ID 501 OF oFld:aDialogs[1] ; // Siguiente
VALID GetKeyState( VK_UP ) OR ;
GetKeyState( VK_RETURN ) ;
ACTION ( Siguiente( aGets, aCampos ) )
Sucede que al llegar al botón de Siguiente y oprimir flecha abajo el focus se pasa el primer get del dialogo. Pero no puedes regresar con flecha arriba para que el focus se ponga en el botón nuevamente. Asi que al llegar al botón de Siguiente, la única opción que estoy dejando es Flecha arriba y Enter.
Si es flecha arriba pues el focus se pone en el último get del dialogo antes de entrar al botón.
Si es Enter se activará la función Siguiente( )
Gracias
Lo resolví usando el VALID del botón,
REDEFINE BUTTON aBtns[1] ID 501 OF oFld:aDialogs[1] ; // Siguiente
VALID GetKeyState( VK_UP ) OR ;
GetKeyState( VK_RETURN ) ;
ACTION ( Siguiente( aGets, aCampos ) )
Sucede que al llegar al botón de Siguiente y oprimir flecha abajo el focus se pasa el primer get del dialogo. Pero no puedes regresar con flecha arriba para que el focus se ponga en el botón nuevamente. Asi que al llegar al botón de Siguiente, la única opción que estoy dejando es Flecha arriba y Enter.
Si es flecha arriba pues el focus se pone en el último get del dialogo antes de entrar al botón.
Si es Enter se activará la función Siguiente( )
Gracias
Excelente amigo.fleal wrote:William,
Lo resolví usando el VALID del botón,
REDEFINE BUTTON aBtns[1] ID 501 OF oFld:aDialogs[1] ; // Siguiente
VALID GetKeyState( VK_UP ) OR ;
GetKeyState( VK_RETURN ) ;
ACTION ( Siguiente( aGets, aCampos ) )
Sucede que al llegar al botón de Siguiente y oprimir flecha abajo el focus se pasa el primer get del dialogo. Pero no puedes regresar con flecha arriba para que el focus se ponga en el botón nuevamente. Asi que al llegar al botón de Siguiente, la única opción que estoy dejando es Flecha arriba y Enter.
Si es flecha arriba pues el focus se pone en el último get del dialogo antes de entrar al botón.
Si es Enter se activará la función Siguiente( )
Gracias
Saludos
William, Morales
Saludos
méxico.sureste
Saludos
méxico.sureste