Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: TheGhost(Z) en 21 Febrero 2006, 11:59 am



Título: Controlar Key press
Publicado por: TheGhost(Z) en 21 Febrero 2006, 11:59 am
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


Título: Re: Controlar Key press
Publicado por: Magic_Key en 21 Febrero 2006, 15:11 pm
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:
Código:
label1.caption = keycode
y AHORA pulsas las flechas, te saldra su keycode , q creo q es lo mismo q el keyascii.
salu2  ;)


Título: Re: Controlar Key press
Publicado por: Ironhorse en 21 Febrero 2006, 19:02 pm
Existen constantes con nombres representativos:

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

Hay para todas las teclas.




Título: Re: Controlar Key press
Publicado por: TheGhost(Z) en 22 Febrero 2006, 10:01 am
Entiendo..

Estaba haciendo algo similar a lo que me propsurtiste tel
Código:
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!!.


Título: Re: Controlar Key press
Publicado por: [VolkS] en 23 Febrero 2006, 21:16 pm
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.




Título: Re: Controlar Key press
Publicado por: TheGhost(Z) en 25 Febrero 2006, 10:29 am
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:

Código:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 40 Then Text2.SetFocus
End Sub
Pero no pasa nada...

Tambien probe con:
Código:
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..


Título: Re: Controlar Key press
Publicado por: ReViJa en 25 Febrero 2006, 12:04 pm
Me da la impresión de que te has hecho un lio...
Mira:
Código:
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.

Código:
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.


Título: Re: Controlar Key press
Publicado por: TheGhost(Z) en 25 Febrero 2006, 13:36 pm
Gracias Tesis. ya no tengo problemas con las Flechas direccionales...