control con visual basic

#1
Hola a todos!

La verdad recién estoy empezando con esto de programación en Visual Basic y quisiera saber si alguien sabe bien como hacer que un boton de comandos responda solamente al presionar una sola tecla.

Me explico: Si por ejemplo, si hiciera una aplicacion que me permita encender una lampara, y quisiera que la lampara se encienda solo al presionar la tecla "L" y al volver a presionar la misma tecla, se apague la lampara.

Se que existe el comando KEYPRESS, KEY UP, y KEY DOWN pero no se bien como utilizar la sintaxis para lo que deseo.

Tambien agradeceria que alguien me ayudara a hacer lo mismo pero con las teclas de direccion del teclado, tengo entendido que ellas no poseen caracteres reconocidos como ascii o si?

de antemano muchas gracias y cualquier ayudita es bien recibida
 
#2
tendrias q crear un ciclo cuando presiones el boton le des un valor, cuando vuelvas a darle estara en es valor y vuelves a cambiarle el valor de nuevo. ej

general
n= 0 ;0=apagado, 1= encendido

(keypress)

if n=0 then
; enciende lampara
n=1
if n= 1 then
;apagar lampara

end if


es un ejemplo para captar la idea.

en esta pagina estan los scancodes del teclado por si te sirve de algo.

http://atc.ugr.es/docencia/udigital/ap05.html

esto es solo una ayuda espero q te sirva de apoyo.
 
#5
tendrias q crear un ciclo cuando presiones el boton le des un valor, cuando vuelvas a darle estara en es valor y vuelves a cambiarle el valor de nuevo. ej

general
n= 0 ;0=apagado, 1= encendido

(keypress)

if n=0 then
; enciende lampara
n=1
if n= 1 then
;apagar lampara

end if


es un ejemplo para captar la idea.

en esta pagina estan los scancodes del teclado por si te sirve de algo.

http://atc.ugr.es/docencia/udigital/ap05.html

esto es solo una ayuda espero q te sirva de apoyo.
Buenas noches.

Para cambiar el estado de una variable tipo "Byte" una forma muy elegante es hacerlo con

una función EXOR 1

Mira este código...

Dim Numero(26) As Byte ' Reservamos 26 posiciones de la "A" a la "Z"
Public tecla As Integer
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
tecla = KeyCode

If tecla > 64 And tecla < 91 Then 'De la "A" a la "Z"
tecla = tecla - 64 'Restamos 64 para ponernos en el rango de 1 a 26
Procesar ' Vamos a la Sub Rutina "Procesar"
End If
End Sub

Public Sub Procesar()
Cls ' Borramos pantalla
Numero(tecla) = Numero(tecla) Xor 1 'Invertimos el valor que hay en cada posición
For i = 1 To 26
Print " " & Numero(i) & " "; ' Lo visualizamos
Next i
End Sub


Solo tienes que abrir un formulario, no hace falta que pongas nigún control.
Procura que el formulario tenga suficiente anchura para visualizar la cadena completa
En la pantalla de codigo borra....


Private Sub Form_Load()

End Sub


Copia el código anterior y pégalo en la pantalla de código

Ejecútalo.


Pulsa cualquier tecla de la A a la Z
Verás que en el formulario aparece una ristra de ceros menos la posición correspondiente a la tecla pulsada que estará a 1.
Si pulsas la misma tecla, esa posición cambiará de valor.
Como verás el proceso es muy simple, solo tienes que procesar la variable Numero(x) dónde la x es el subindice de la variable Numero que tiene 25 posiciones.
Espero que te sea de utilidad.

Saludos.
 
Última edición:
Arriba