Resumen Cambiar foco con ENTER para N Controles

Diego:

Tu pregunta me hizo pensar en como hacerlo si necesidad de entrar a
escribir código especificamente en cada unos de los controles a los que se
quiere pasar el foco... la tarea sería muy dura si pensamos que la forma
puede tener muchos controles.

Ahí te mando el código necesario para hacerlo sin importar la cantidad de
controles y escribiendo el código en una sóla parte. La solución es
aprovechar la propiedad de la forma KEYPREVIEW, en TRUE, la cual hace que
las teclas se procesen primero en la forma antes que en los controles y
aprovechar la propiedad TABINDEX de los controles.


Private Sub Form_KeyPress(KeyAscii As Integer)
If TeclaEnter(KeyAscii) Then
        'KeyAscii = 0, La funcion se encarga de anular el valor
        'de la tecla keyascii
End If
End Sub

Function TeclaEnter(KeyCode As Integer) As Boolean
On Error GoTo OcurrioError
Static MNtabindex As Integer, I As Integer
Static Micontrol As Control
Static MLHuboError As Boolean 'Variable que indica si hubo error o no

TeclaEnter = False
MNtabindex = Screen.ActiveControl.TabIndex
If KeyCode = 13 Then
    TeclaEnter = True
    KeyCode = 0 'Anula la entrada de la tecla enter, de lo
    'contrario, sino se anula, al pulsar la tecla enter, se emite
    'un sonido cada vez que se cambia de control
     Do While True
        MLHuboError = False
        MNtabindex = MNtabindex + 1
        If MNtabindex > Me.Controls.Count - 1 Then
           MNtabindex = 0 'El primer foco
        End If
        For Each Micontrol In Me.Controls
               If Micontrol.TabIndex = MNtabindex Then
                   Micontrol.SetFocus
                   If Not MLHuboError Then Exit For
               End If
        Next
        'termina el ciclo infinito
        If Not MLHuboError Then Exit Do
     Loop
End If
Salir:
    Exit Function
OcurrioError:
    If Err.Number = 438 Then
       'El control de la propiedad Tabindex no acepta el evento Setfocus
        MLHuboError = True
        Resume Next 'Siguiente linea del error
    End If
End Function

No es mas.....

Saludos, Liliana


> Hola amigos hojala me puedan ayudar en lo siguiente.
>
> 1. Alguien sabe como pasar el foco de un control a otro con al
> presionar la
> tecla ENTER y no TAB.
>



Resumen Resumen

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com