Mantener el enfoque en un control

Te quería preguntar como se mantiene el cursor dentro de un cuadro de texto de un form. Después de actualizar ese cuadro, ya que al pulsar enter salta al siguiente control.
Tengo puesto en ese cuadro, en el evento Después de actualizar, que me filtre lo que he escrito en el, y si no es válido, borre el contenido de lo que hay escrito en el cuadro pero lo que quiero es que después de borrar el contenido se mantenga el enfoque en ese cuadro y no salte al siguiente que tenga el punto de tabulación.
Lo he probado con Gotocontrol y setfocus y no sirve.
Respuesta
1
Hombre, pues lo que me dices de que no funciona el setfocus no lo entiendo, porque suele ir bien. En cualquier caso, y en plan chapu, puedes decirle al siguiente control que obtenga el foco (evento got_focus) que en base a una variable declarada global a tu formulario (un tipo switch) devuelva el foco al control anterior, porque pienso que si el setfocus no va es porque se está pegando de leches con otro evento que está ocurriendo al mismo tiempo.

1 respuesta más de otro experto

Respuesta

Yo tengo un cuadro de texto "txtBusqueda" y junto a él un botón "btnBuscar" para realizar dicha búsqueda

Lo que he hecho para buscar sin tener que seleccionar y reemplazar mi búsqueda anterior es posicionar "txtBusqueda" con orden de tabulación 0 y "btnBuscar" con tabulación 1, entonces, mi botón al recibir el enfoque (no al hacer clic) realizará la acción de buscar y al final (o al principio) enviará el enfoque a mi cuadro de texto, esto incluye recibir el enfoque al tabular o presionar Enter

Private Sub btnBuscar_GotFocus()
txtBusqueda.SetFocus

Dim Consulta As String
If Not IsNull(Me.txtBusqueda) Then

Consulta = "SELECT Id, Nombre, Puesto " _
& "FROM Tabla " _
& "WHERE Id Like '*" & Me.txtBusqueda & "*'" _
& "OR StrConv(Nombre,2,1042) Like '*" & StrConv(Replace(Me.txtBusqueda, "'", "''"), 2, 1042) & "*'" _
& "OR StrConv(Puesto,2,1042) Like '*" & StrConv(Replace(Me.txtBusqueda, "'", "''"), 2, 1042) & "*'" _
& "Order By Empleado"

Else

Consulta = "SELECT Id, Nombre, Puesto " _
& "FROM Tabla " _
& "Order By Empleado"

End If

Me.Lista.RowSource = Consulta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas