ctrl+U - como la detecto?
ctrl+U - como la detecto?
Buenas noches,
Necesito, dentro de un diálogo, detectar cuando se haya pulsado la combinación de teclas "Ctrl + U" que antes usaba en Clipper (chr 21)
hago esto:
oDlg:bKeyDown := {|nK| if(nK==21, ...hacer una cosa... , ....hace otra cosa ) }
Pero siempre me detecta la primera de las dos que presiono (17 para Ctrol y 85 para U).
¿Como puedo hacerlo?.
Gracias.
Rolando
Necesito, dentro de un diálogo, detectar cuando se haya pulsado la combinación de teclas "Ctrl + U" que antes usaba en Clipper (chr 21)
hago esto:
oDlg:bKeyDown := {|nK| if(nK==21, ...hacer una cosa... , ....hace otra cosa ) }
Pero siempre me detecta la primera de las dos que presiono (17 para Ctrol y 85 para U).
¿Como puedo hacerlo?.
Gracias.
Rolando
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Code: Select all
DO CASE
CASE ( nKey == Asc( "A" ) .OR. nKey == Asc( "a" ) ) .AND. ;
GetKeyState( VK_CONTROL )
? 'Control+A-For Nilson'
CASE ( nKey == Asc( "B" ) .OR. nKey == Asc( "b" ) ) .AND. ;
GetKeyState( VK_CONTROL )
? 'Control+B-For Nilson'
CASE ( nKey == Asc( "C" ) .OR. nKey == Asc( "c" ) ) .AND. ;
GetKeyState( VK_CONTROL )
? 'Control+C-For Nilson'
CASE ( nKey == Asc( "D" ) .OR. nKey == Asc( "d" ) ) .AND. ;
GetKeyState( VK_CONTROL )
? 'Control+D-For Nilson'
CASE ( nKey == Asc( "E" ) .OR. nKey == Asc( "e" ) ) .AND. ;
GetKeyState( VK_CONTROL )
? 'Control+E-For Nilson'
CASE ( nKey == Asc( "F" ) .OR. nKey == Asc( "f" ) ) .AND. ;
GetKeyState( VK_CONTROL )
? 'Control+F-For Nilson'
CASE ( nKey == Asc( "G" ) .OR. nKey == Asc( "g" ) ) .AND. ;
GetKeyState( VK_CONTROL )
? 'Control+G-For Nilson'
CASE ( nKey == Asc( "H" ) .OR. nKey == Asc( "h" ) ) .AND. ;
GetKeyState( VK_CONTROL )
? 'Control+H-For Nilson'
CASE ( nKey == Asc( "I" ) .OR. nKey == Asc( "i" ) ) .AND. ;
GetKeyState( VK_CONTROL )
? 'Control+I-For Nilson'
CASE ( nKey == Asc( "P" ) .OR. nKey == Asc( "p" ) ) .AND. ;
GetKeyState( VK_CONTROL )
? 'Control+P-For Nilson'
CASE ( nKey == Asc( "T" ) .OR. nKey == Asc( "t" ) ) .AND. ;
GetKeyState( VK_CONTROL )
? 'Control+T-For Nilson'
//CASE ( nKey == Asc( "Z" ) .OR. nKey == Asc( "z" ) ) .AND. ;
// GetKeyState( VK_CONTROL )
// ? 'Control+Z-For Nilson'
CASE ( nKey == VK_INSERT .AND. GetKeyState( VK_SHIFT ) ) .OR. ;
( nKey == ASC( "V" ) .AND. GetKeyState( VK_CONTROL ) ) .OR. ;
( nKey == ASC( 'X' ) .AND. GetKeyState( VK_CONTROL ) )
? ' Multiplas-For Nilson'
/*
CASE nKey==VK_F12
? 'F12-For Nilson'
*/
CASE ( nKey == VK_F2 .AND. GetKeyState( VK_CONTROL ) )
? 'Control+F2-For Nilson'
// Acao(Action) do seu programa
CASE ( nKey == VK_F3 .AND. GetKeyState( VK_CONTROL ) )
? 'Control+F3-For Nilson'
// Acao(Action) do seu programa
CASE ( nKey == VK_F4 .AND. GetKeyState( VK_CONTROL ) )
? 'Control+F4-For Nilson'
// Acao(Action) do seu programa
CASE ( nKey == VK_F5 .AND. GetKeyState( VK_CONTROL ) )
? 'Control+F5-For Nilson'
// Acao(Action) do seu programa
CASE ( nKey == VK_F6 .AND. GetKeyState( VK_CONTROL ) )
? 'Control+F6-For Nilson'
// Acao(Action) do seu programa
CASE ( nKey == VK_F7 .AND. GetKeyState( VK_CONTROL ) )
? 'Control+F7-For Nilson'
// Acao(Action) do seu programa
CASE ( nKey == VK_F8 .AND. GetKeyState( VK_CONTROL ) )
? 'Control+F8-For Nilson'
// Acao(Action) do seu programa
CASE ( nKey == VK_F9 .AND. GetKeyState( VK_CONTROL ) )
? 'Control+F9-For Nilson'
// Acao(Action) do seu programa
//CASE ( nKey == VK_F10 .AND. GetKeyState( VK_CONTROL ) )
// ? 'Control+F10-For Nilson'
// Acao(Action) do seu programa
CASE ( nKey == VK_F11 .AND. GetKeyState( VK_CONTROL ) )
? 'Control+F11-For Nilson'
// Acao(Action) do seu programa
CASE ( nKey == VK_F12 .AND. GetKeyState( VK_CONTROL ) )
? 'Control+F12-For Nilson'
// Acao(Action) do seu programa
ENDCASE
João Santos - São Paulo - Brasil
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
PRUEBA CON ESTO
rolando,
este codigo me funciona bien
#include "FiveWin.ch"
function Main()
local oDlg
DEFINE DIALOG oDlg TITLE "PRUEBA DE PULSACION DE TECLA"
ODLG:BKEYDOWN:={|NKEY|ULTTECLA(NKEY)}
ACTIVATE DIALOG oDlg CENTERED
return nil
FUNCTION ULTTECLA(NKEY)
// yo por si las "_" he anulado las teclas de combinación como
// ctrl en este caso
IF NKEY=17
RETURN NIL
ENDIF
IF NKEY=85 .AND. GetKeyState( 17 )
?"hola" // Aqui pones la funcion que quieras ejecutar
ENDIF
return nil
Espero que te sirva
este codigo me funciona bien
#include "FiveWin.ch"
function Main()
local oDlg
DEFINE DIALOG oDlg TITLE "PRUEBA DE PULSACION DE TECLA"
ODLG:BKEYDOWN:={|NKEY|ULTTECLA(NKEY)}
ACTIVATE DIALOG oDlg CENTERED
return nil
FUNCTION ULTTECLA(NKEY)
// yo por si las "_" he anulado las teclas de combinación como
// ctrl en este caso
IF NKEY=17
RETURN NIL
ENDIF
IF NKEY=85 .AND. GetKeyState( 17 )
?"hola" // Aqui pones la funcion que quieras ejecutar
ENDIF
return nil
Espero que te sirva