Que tal salu2 para to2 ;D
Tengo un problemilla simple, el cual no he podido resolver jaja.
Estoy haciendo una aplicación y necesito que sea lo más operable posible con el teclado, por ejmplo:
el boton cmdAceptar se acciona tanto pulsandolo como oprimiendo la tecla F2, la bronca es oprimo hasta 2 veces seguidas únicamente tal boton, al pulsar F2 por tercera ocasion ya no se ejecuta lo que hace el boton, y vuelve a ejecutarse hasta que algun otro control tome el foco.
El code que estoy usando es:
If KeyCode = vbKeyF1 Then
frmNuevoCliente.Show 1
ElseIf KeyCode = vbKeyF2 Then
cmdEditar_Click
ElseIf KeyCode = vbKeyF3 Then
ElseIf KeyCode = vbKeyF4 Then
cmdTodos_Click
ElseIf KeyCode = vbKeyF5 Then
optnom.Value = True
ElseIf KeyCode = vbKeyF6 Then
opttel.Value = True
ElseIf KeyCode = vbKeyF7 Then
optdir.Value = True
End If
KeyCode = 0
Seguiré googleando para ver posibles respuestas y espero puedan postear algunos tips. Gracias
:)
lo ideal es usar combinacion de teclas, F1 es ayuda del winbug...
hay otra manera de hacer esto mas eficiente registrando las keys, usando un timer o con un hook al teclado...
Pero lo que quieres hacer con los botones lo hace el visual basic en el caption pones la _ debajo de la letra que kieras usar en la combinacion de tecla .. con un simple & delante de la letra que kieras usar:
&Abrir , la combinacion seria Alt + a para presionar el boton.
Saludos.
Hola, Puedes intentarlo así. A mi me funciona perfecto!
Debes asignarle el valor True a la propiedad KeyPreview del Form. Saludos
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim CtrlDown
CtrlDown = (Shift And vbCtrlMask) > 0
Select Case KeyCode
Case vbKeyF8
If bundo.Enabled = True Then
bundo_Click
End If
Case vbKeyF9
If bsalir.Enabled = True Then
bsalir_Click
End If
Case vbKeyF4
If bnew.Enabled = True Then
bnew_Click
End If
Case vbKeyF5
If bsave.Enabled = True Then
bsave_Click
End If
Case vbKeyF7
If bdel.Enabled = True Then
bdel_Click
End If
Case vbKeyP
If bnew.Enabled = True Then
VengoDe = "Facturacion"
FrmListaPedidosFac.Show vbModal
End If
Case vbKeyF
If bnew.Enabled = True Then
FrmListaFacturas.Show vbModal
End If
End Select
End Sub
Gracias byway, pero eso que decis del & lo se, en cuanto al registro de keys puede ser una opcion junto con los hooks.
Ahora estoy probando la alternativa de ssccaann43 y parace funcionar hasta el momento.
Gracias a los dos.