Controlar Key press

Iniciado por TheGhost(Z), 21 Febrero 2006, 11:59 AM

0 Miembros y 1 Visitante están viendo este tema.

TheGhost(Z)

Hola. Si alguie sabe cual el código asccii de las teclas:

Spr:
Flecha Abajo:
Flecha Izquierda:
Flecha derecha:
Flecha Arriba:

Ejemplos:

Enter: = 13
Esc: = 27
Borrar atras: = 8

Saludos

Magic_Key

no te lo dire, pero te enseñare como lo puedes sacar:

si abres un nuevo projecto y le agregas un label, y en el evento Keydown del formulario pones esto:

label1.caption = keycode

y AHORA pulsas las flechas, te saldra su keycode , q creo q es lo mismo q el keyascii.
salu2  ;)

Ironhorse

Existen constantes con nombres representativos:

vbKeyLeft : FLECHA IZQUIERDA
vbKeyUp : FLECHA ARRIBA
vbKeyRight : FLECHA DERECHA
vbKeyDown : FLECHA ABAJO

Hay para todas las teclas.


Pégense una vuelta por Cracton :)

TheGhost(Z)

Entiendo..

Estaba haciendo algo similar a lo que me propsurtiste tel label1.caption = keycode

Y no me salía, porque yo lo ponía en el evento keypress y mandaba el keyasciii en label1. el alfabeto si salía, pero las teclas que lo necesitaba no salia.. y he aqui con lo queme propusiste..


Spr: = 46
Flecha Abajo:=  40
Flecha Izquierda: = 37
Flecha derecha: = 39
Flecha Arriba: = 38

Ejemplos:

Enter: = 13
Esc: = 27
Borrar atras: = 8


Gracias por el Aporte a ambos!!.

[VolkS]

Te conviene usar alguna de estas dos Api's.

Public Declare Function GetKeyState Lib "user32" Alias "GetKeyState" (ByVal nVirtKey As Long) As Integer

Para saber cual tecla es presionada.

por Ej:


If GetKeyState(VbKeyF5) <0 Then
'La accion que queres que haga por ej:"label1.caption ="hola"
else
End If

Esa Api solo funciona para windows 2000 en adelante.

Y sino:
Public Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer

Funciona en todos los windows pero no toma todas las teclas.



TheGhost(Z)

Pues me imagino que los Asciis que apunte mas arriba son las correctas:

Tengo Text1 y Text2

Cuado el foco esta en Text1 al precionar flecha abajo deberia irse al Text2. Y cuando estoy en el Text2 al precionar la flecha arriba deberia irse al Text1:

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 40 Then Text2.SetFocus
End Sub

Pero no pasa nada...

Tambien probe con:
Private Sub Text2_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyAscii = 38 Then Text1.SetFocus
End Sub



Tambien intente com...
Private Sub Text2_KeyDown(KeyCode As Integer, Shift As Integer)
If vbKeyUp Then Text1.SetFocus
End Sub

AL precionar las teclas Arriba y Abjo funcionada.. ;) .. pero al ingrsar los numeros tambien :# ??.. osea no sirve..


Favor si alguien tuvo un problema similar me pueda guiar.....

Tengo unas cuantso textbox en un form y lo que quiero es desplazarmen entre ellas con las Flechas: arriba, abajo, izquierda y derecha... ya que con el Enter solo siver para una opcion...

Saludos..

ReViJa

#6
Me da la impresión de que te has hecho un lio...
Mira:
Private Sub Text1_Keydown(Keycode As Integer, shift As Integer)

Select Case Keycode
Case vbKeyUp
   Text1.SetFocus
Case vbKeyDown
   Text2.SetFocus
Case vbKeyLeft
   Text3.SetFocus
Case vbKeyRight
   Text4.SetFocus
End Select

End Sub


En el primer case al ser el primer objeto que toma el foco y no tener otro por encima, no hace falta que le pongas vbkeyup para que se tome el foco  puesto que ya lo tiene, lo he dejado para que te hagas una idea de como van el resto de txt y poder  tenerlos controlados con las flechas.

Con la funcion SelStart=0 si hay texto introducido toma el foco en la posicion 0 (en el principio) por si te es de utilidad.

Private Sub Text1_Keydown(Keycode As Integer, shift As Integer)

Select Case Keycode
Case vbKeyUp
   Text1.SetFocus:  Text1.SelStart = 0
Case vbKeyDown
   Text2.SetFocus:  Text2.SelStart = 0
Case vbKeyLeft
   Text3.SetFocus:  Text3.SelStart = 0
Case vbKeyRight
   Text4.SetFocus:  Text4.SelStart = 0
End Select

End Sub



Un saludo.

TheGhost(Z)

Gracias Tesis. ya no tengo problemas con las Flechas direccionales...