FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Ayuda, es algo sencillo con Set Key
Posts: 188
Joined: Wed Feb 01, 2006 06:59 PM
Ayuda, es algo sencillo con Set Key
Posted: Fri Dec 19, 2008 01:47 AM
Hola foro, a los tiempos una pregunta.

Tengo el siguiente c贸digo usando Set Key, que lo ubico al inicio del programa y me sirve para llamar a una rutina oculta en cualquier momento dentro de la aplicaci贸n.

SET KEY VK_F2 TO Bienvenido()


Qquiero saber como ser铆a la sentencia si quiero usar una combinaci贸n de teclas, como por ejemplo Ctrl+F9.

Saludos desde Ecuador

Fernando Espinoza
Saludos



Fernando Espinoza
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Ayuda, es algo sencillo con Set Key
Posted: Fri Dec 19, 2008 05:10 AM
fespinoza wrote:Hola foro, a los tiempos una pregunta.

Tengo el siguiente c贸digo usando Set Key, que lo ubico al inicio del programa y me sirve para llamar a una rutina oculta en cualquier momento dentro de la aplicaci贸n.

SET KEY VK_F2 TO Bienvenido()


Qquiero saber como ser铆a la sentencia si quiero usar una combinaci贸n de teclas, como por ejemplo Ctrl+F9.

Saludos desde Ecuador

Fernando Espinoza


Mira si es esto lo que deseas:

oWnd:bKeyDown := { |nKey| IIF(nKey == VK_F6 .and. GetKeyState(VK_CONTROL) .AND. GetKeyState(VK_TAB), MiChequeo(), IF(nKey == VK_F5 .and. GetKeyState(VK_CONTROL) .AND. GetKeyState(VK_TAB), WinExec("winword "+"wcont.ini"),) )}

Saludos.
Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 682
Joined: Tue Feb 14, 2006 09:48 AM
Ayuda, es algo sencillo con Set Key
Posted: Fri Dec 19, 2008 08:39 AM
como te comenta Francisco es una forma de hacerlo, otra que quizas te quede mas claro, es asignando la funcion a la tecla F9
SET KEY VK_F9 TO Funcion()

y en la funcion comprobar si se ha pulsado control.
FUNCTION Funcion()
    IF ! GETKEYSTATE( VK_CONTROL ) 
        ? "CTRL-F9" 
    ELSE
         RETURN NIL
    ENDIF 
...
Saludos desde Mallorca
Biel Maim贸
http://bielsys.blogspot.com/
Posts: 188
Joined: Wed Feb 01, 2006 06:59 PM
Ayuda, es algo sencillo con Set Key
Posted: Fri Dec 19, 2008 12:00 PM

Amigos, gracias por sus respuestas, voy a probar las 2 opciones y les aviso

Saludos



Fernando Espinoza
Posts: 188
Joined: Wed Feb 01, 2006 06:59 PM
Ayuda, es algo sencillo con Set Key
Posted: Wed Dec 24, 2008 12:55 PM

Estimados Biel, Francisco

Probe sus sugerencias, pero no tengo resultados positivos , porque la combinaci貌n de teclas aplastadas debe ser al mismo tiempo (como cuando se hacia Ctrl+PrintScreen), y con lo que me enviaron detecta el ingreso de las teclas de forma individual uno por uno (es decir primero detecta F9 luego el control) y no como una combinacion al mismo tiempo.

Alguna sugerencia adicional.

Saludos

Fernando Espinoza

Saludos



Fernando Espinoza
Posts: 625
Joined: Wed Mar 14, 2007 06:49 PM
Ayuda, es algo sencillo con Set Key
Posted: Wed Dec 24, 2008 03:28 PM
Estimado Colega Fernando:

yo lo hago de esta manera y me funciona bien..
Ojala y sea lo que buscas..

#Include "FIVEWIN.CH"
#Include "VKEY.CH"

Function Main()

Define Window oWndMain .. ..
(Ya sabes como va todo esto..)

oWndMain:bKeyDown = { | nKey | ACCESOS(nKey) }  //Esto llama a las teclas combinadas

Activate Window oWndMain


//--------------------------//
STATIC FUNCTION ACCESOS(nKey)

/****************************************************
  Para accesar con la Tecla CTRL  + A := CASE ( nKey == ASC( "A" ) .OR. nKey == ASC( "a" ) ) .AND. GetKeyState( VK_CONTROL )
  Para accesar con la Tecla SHIFT + A := CASE ( nKey == ASC( "A" ) .OR. nKey == ASC( "a" ) ) .AND. GetKeyState( VK_SHIFT )
  Para accesar con la Tecla CTRL  + F2:= CASE ( nKey == VK_F2 .AND. GetKeyState( VK_CONTROL ) )
  Para accesar con la Tecla SHIFT + F2:= CASE ( nKey == VK_F2 .AND. GetKeyState( VK_SHIFT ) )
  Para accesar con la Tecla         F2:= CASE ( nKey == VK_F2 )
  Se pueden Usar la teclas "Especiales como: Enter, Retroceso, Flechas de Movimiento, Sup, Ins, Inicio, Final, etc. Revisar el Archivo VKEY.CH"
****************************************************/

//msginfo(nKey)

DO CASE 
 
CASE ( nKey == VK_F2 ) 
MsgInfo("Uno")
CASE ( nKey == VK_F3 )
MsgInfo("Dos")
CASE ( nKey == VK_F4 )
MsgInfo("Tres")
CASE ( nKey == VK_RETURN   .AND. GetKeyState( VK_CONTROL ) )     
MsgInfo("Cuatro")
CASE ( nKey == VK_ADD      .AND. GetKeyState( VK_CONTROL ) )     
MsgInfo("Cinco")
CASE ( nKey == VK_SUBTRACT .AND. GetKeyState( VK_CONTROL ) )     
MsgInfo("Seis")
CASE ( nKey == VK_MULTIPLY .AND. GetKeyState( VK_CONTROL ) )     
MsgInfo("Siete") 
CASE ( nKey == ASC( "C" ) .OR. nKey == ASC( "c" ) ) .AND. GetKeyState( VK_SHIFT )  
MsgInfo("Ocho")
CASE ( nKey == ASC( "B" ) .OR. nKey == ASC( "b" ) ) .AND. GetKeyState( VK_CONTROL )     
MsgInfo("Nueve")    
CASE ( nKey == ASC( "F" ) .OR. nKey == ASC( "f" ) ) .AND. GetKeyState( VK_CONTROL )
MsgInfo("Diez")    
ENDCASE 

RETURN( .T. )


Espero que pases una muy Feliz Navidad...

Un fuerte abrazo.. :-) :-) :-)
Soluciones y Dise帽o de Software
Damos Soluciones...

I.S.C. Victor Daniel Cuatecatl Leon
Director y Dise帽ador de Proyectos

http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Posts: 188
Joined: Wed Feb 01, 2006 06:59 PM
Ayuda, es algo sencillo con Set Key
Posted: Wed Dec 24, 2008 05:36 PM

Estimado Cuatecatl82,

Voy a probar y de antemano gracias por todo.

Saludos



Fernando Espinoza

Continue the discussion