como capturar el evento de pulsar las teclas de funcion

philidor
19 de Noviembre del 2003
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

Baltasar
19 de Noviembre del 2003
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

philidor
19 de Noviembre del 2003
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

Juan
19 de Noviembre del 2003
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.

sdemingo
19 de Noviembre del 2003
Pues tendrás que colocar ese código para el evento keypress de todos los controles que haya en el formulario.

philidor
19 de Noviembre del 2003
vaya ,vaya .....
gracias

sdemingo
19 de Noviembre del 2003
keydown, en lugar de keypress

;-)