Detectar flecha arriba, flecha abajo en un button

Detectar flecha arriba, flecha abajo en un button

Postby fleal » Sat Oct 28, 2006 12:59 am

Hola gente,
¿Como detecto cuando el usuario ha oprimido las teclas de flecha arriba ó flecha abajo en un botón?

Gracias
fleal
 
Posts: 234
Joined: Tue Oct 25, 2005 12:39 am
Location: México, DF

Re: Detectar flecha arriba, flecha abajo en un button

Postby wmormar » Sat Oct 28, 2006 1:52 am

fleal wrote:Hola gente,
¿Como detecto cuando el usuario ha oprimido las teclas de flecha arriba ó flecha abajo en un botón?

Gracias


oBtn:bKeyDown := {|nKey| pulsa(nKey)}

function pulsa(nkey)
? nKey
return .t.

Es al vuelo, espero te ayude
William, Morales
Saludos

méxico.sureste
User avatar
wmormar
 
Posts: 1074
Joined: Fri Oct 07, 2005 10:41 pm
Location: México

Postby fleal » Sat Oct 28, 2006 1:44 pm

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
fleal
 
Posts: 234
Joined: Tue Oct 25, 2005 12:39 am
Location: México, DF

Postby wmormar » Sat Oct 28, 2006 2:14 pm

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


oBtn:bChange := {|| pulsa() }

FUNCTION pulsa()
IF GetKeyState(VK_UP)
? "Flecha arriba"
ELSEIF GetKeyState(VK_DOWN)
? "Flecha abajo"
ENDIF
RETURN .t.
William, Morales
Saludos

méxico.sureste
User avatar
wmormar
 
Posts: 1074
Joined: Fri Oct 07, 2005 10:41 pm
Location: México

Postby fleal » Sun Oct 29, 2006 3:08 am

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
fleal
 
Posts: 234
Joined: Tue Oct 25, 2005 12:39 am
Location: México, DF

Postby wmormar » Sun Oct 29, 2006 3:14 am

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


Excelente amigo.

Saludos
William, Morales
Saludos

méxico.sureste
User avatar
wmormar
 
Posts: 1074
Joined: Fri Oct 07, 2005 10:41 pm
Location: México


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Willi Quintana and 55 guests