detectar si se pulsó la tecla ALT izquierda

154 views
Skip to first unread message

JTempo

unread,
Mar 6, 2014, 10:45:06 AM3/6/14
to publice...@googlegroups.com
Hay alguna forma de detectar que se pulsó la tecla ALT  sola en VFP? (tipo los menues de offfice 2013) Gracias de antemano.

francisco prieto

unread,
Mar 6, 2014, 11:01:26 AM3/6/14
to publice...@googlegroups.com
JTempo,

?Inkey(0) lo hace y  y la señala como -9...

Ahora bien... -9 también es F10.

Saludos,

Pancho
Córdoba

Antonio Meza

unread,
Mar 6, 2014, 11:44:36 AM3/6/14
to publice...@googlegroups.com
Hola tienes que ver el valor devuelto por nKeyCode, nShiftAltCtrl

Te anexo un sencillo formulario para que veas que valores devuelve, y puedas hacer lo que necesitas.

saludos
Antonio Meza
tecla.SCT
tecla.scx

JTempo

unread,
Mar 6, 2014, 12:27:26 PM3/6/14
to publice...@googlegroups.com
Quiero recuperar solamente el valor de la tecla Alt si no hago una combinacion con otra tecla no funciona.

JTempo

unread,
Mar 6, 2014, 12:30:53 PM3/6/14
to publice...@googlegroups.com
El tema es que inkey se queda en espera (por ejemplo, los alt del menu no funcionan)

Víctor Hugo Espínola Domínguez

unread,
Mar 6, 2014, 1:39:35 PM3/6/14
to publicesvfoxpro
Hola JTempo

Sí hay, descarga e investiga:http: //vfpx.codeplex.com/wikipage?title=Tab%20Menu&referringTitle=Home

Saludos,
Víctor.
Lambaré - Paraguay.



El 6 de marzo de 2014, 12:45, JTempo <jte...@gmail.com> escribió:

Mario López

unread,
Mar 6, 2014, 1:48:27 PM3/6/14
to publice...@googlegroups.com
@JTempo:

probá con este código:


* Prueba de Alt pulsada

WITH CREATEOBJECT("xForm")
    .Show(1)
ENDWITH

RETURN 


*    #define VK_SHIFT    16
*    #define VK_CTRL        17
#define VK_ALT        18

FUNCTION AltPressed

LOCAL lRet

DECLARE SHORT GetKeyState In WIN32API Integer nKeyCode

*    nRet = 0
*    IF GetKeyState (VK_SHIFT) < 0
*        nRet = nRet + K_SHIFT
*    ENDIF
*    IF GetKeyState (VK_CTRL) < 0
*        nRet = nRet + K_CTRL
*    ENDIF
IF GetKeyState (VK_ALT) < 0
    lRet = .T.
ENDIF

RETURN lRet




DEFINE CLASS xForm as Form 
    ADD OBJECT tmrCheck as Timer WITH Interval = 100
    ADD OBJECT lblStat AS Label WITH Top = 10, Left = 10, AutoSize = .T.
    
    
    PROCEDURE tmrCheck.Timer

    WITH ThisForm.lblStat
        IF AltPressed()
            .Caption = "*** ALT Pulsada ***"
        ELSE 
            .Caption = "*** ALT NO Pulsada ***"
        ENDIF
    ENDWITH
    
    ENDPROC 
    
ENDDEFINE 

***


HTH
Mario
---

JTempo

unread,
Mar 6, 2014, 2:09:50 PM3/6/14
to publice...@googlegroups.com
Muy bueno! Graxxx
Reply all
Reply to author
Forward
0 new messages