como capturar el evento de pulsar las teclas de funcion
Hola a todos-as ,quisiera que alguien me dijese como se captura el evento de pulsar una tecla en concreto en este caso quiero captar el evento de pulsar una tecla de funcion ,un simple ejemplo me bastaria
muchas gracias
muchas gracias
pon este código en un formulario vacío.
en el captíon del form verás los valores de las teclas que pulses, incluyendo si pulsas shift, ctrl o alt.
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Caption = KeyCode & " - " & Shift
End Sub
saludos
en el captíon del form verás los valores de las teclas que pulses, incluyendo si pulsas shift, ctrl o alt.
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Caption = KeyCode & " - " & Shift
End Sub
saludos
gracias por su rapida respuesta baltasar ,era esactamente lo que queria ,pero esa funcion si en el formulario tengo varios objetos como cajas botones o demas ,no me funciona seguramenete por que alguno de esos objetos tiene el enfoque ,si no te importe te explico un poco lo que queria hacer ,en un formulario que contiene varias cajas y botones y demas objetos queria que cuando el usuario pulsase F5 algunas cajas que contienen cantidades se convirtieran a euros ,cuando volviese a pulsar volvieran a su valor anterior
saludos
saludos
Para que funcione aunque el foco lo tenga otro control
debes poner la propiedad KeyPreview=True en el formulario.
De esta forma el evento KeyDown del formulario se
ejecutará independientemente del control que tenga
el foco.
Para ilustrarlo mejor te pongo un código de ejemplo.
Necesitas poner 2 TextBox en el formulario, establecer
KeyPreview=True e insertar este código:
Option Explicit
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim msg As String
msg = "Se ha pulsad F"
Select Case KeyCode
Case vbKeyF1
msg = msg & "1 en Text"
Case vbKeyF2
msg = msg & "2 en Text"
End Select
If Me.ActiveControl Is Text1 Then
msg = msg & "1"
ElseIf Me.ActiveControl Is Text2 Then
msg = msg & "2"
End If
MsgBox msg
End Sub
Una vez en ejecución situate en uno de los textBox y
pulsa F1 o F2, verás que aperece un MsgBox diciendo
la tecla que pulsaste y el textbox que tenía el foco.
Por cierto, por si no lo sabes, la propiedad ActiveControl
del formulario es una referencia al control que tiene
el foco.
debes poner la propiedad KeyPreview=True en el formulario.
De esta forma el evento KeyDown del formulario se
ejecutará independientemente del control que tenga
el foco.
Para ilustrarlo mejor te pongo un código de ejemplo.
Necesitas poner 2 TextBox en el formulario, establecer
KeyPreview=True e insertar este código:
Option Explicit
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim msg As String
msg = "Se ha pulsad F"
Select Case KeyCode
Case vbKeyF1
msg = msg & "1 en Text"
Case vbKeyF2
msg = msg & "2 en Text"
End Select
If Me.ActiveControl Is Text1 Then
msg = msg & "1"
ElseIf Me.ActiveControl Is Text2 Then
msg = msg & "2"
End If
MsgBox msg
End Sub
Una vez en ejecución situate en uno de los textBox y
pulsa F1 o F2, verás que aperece un MsgBox diciendo
la tecla que pulsaste y el textbox que tenía el foco.
Por cierto, por si no lo sabes, la propiedad ActiveControl
del formulario es una referencia al control que tiene
el foco.
Pues tendrás que colocar ese código para el evento keypress de todos los controles que haya en el formulario.
