Access - Obtener Foco

 
Vista:

Obtener Foco

Publicado por Jose Luis (46 intervenciones) el 29/09/2000 00:00:00
Hola y gracias a todo el que lea esto.
Necesito saber que control tiene en cada momento el foco, para asi poder cambiarle el color segun obtiene el foco, y dejarlo como estaba cuando lo pierde.
Mi problema es que no se que control tiene el foco en cada momento, he probado con Application.CurrentObjectName
pero esto solo me devuelve el form activo, no el control.
Alguien puede decirme como hacerlo.
De nuevo muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Obtener Foco

Publicado por Pedro Pablo (23 intervenciones) el 29/09/2000 00:00:00
Prueba con Screen.ActiveControl

Espero que te sirva!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obtener Foco

Publicado por Pedro José (2 intervenciones) el 30/09/2000 00:00:00
Hola, yo he probado lo que dices por que me pareció interesante pero no me funciona, ¿alguna otra idea?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obtener Foco

Publicado por tecniCam (117 intervenciones) el 30/09/2000 00:00:00
Eso es muy fácil:
En cada control debes situar el código de cambio de color en los eventos...
GotFocus es cuando lo tiene y
LostFocus es cuando lo pierde
Ya está.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obtener Foco

Publicado por Pedro José (2 intervenciones) el 01/10/2000 00:00:00
Pero cómo hacemos para saber qué control tiene el foco en un momento determinado, es que quiero incluirlo en una condiconal.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obtener Foco

Publicado por tecniCam (117 intervenciones) el 01/10/2000 00:00:00
´Este ejemplo muestra un mensaje en una etiqueta diciendo qué TextBox tiene el enfoque. Para probar este ejemplo, pega el código en la sección Declaraciones de un formulario que contenga un control TextBox y dos copias del mismo y un control Label. Después ejecútalo y haz clic (o con tabulador) en los controles TextBox.
Private Sub Form_Load()
Label1.AutoSize = True
End Sub
Private Sub Text1_GotFocus(Index As Integer)
Select Case Index
Case 0
Label1.Caption = "TextBox 1 tiene el enfoque."
Case 1
Label1.Caption = "TextBox 2 tiene el enfoque."
Case 2
Label1.Caption = "TextBox 3 tiene el enfoque."
End Select
End Sub
Private Sub Text1_LostFocus(Index As Integer)
Label1.Caption = ""
End Sub
Ahora podrías ponerle otro código en cada Case, y olvida la etiqueta.
Si no se pueden llamar todos igual, tienes que hacer una matriz de controles para numerarlos y un procedimiento con el nombre de la matriz(index) y aplicar los Case igual.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obtener Foco

Publicado por Jose Luis (46 intervenciones) el 02/10/2000 00:00:00
Hola a todos y gracias por contestar.
Bueno yo he llegado hasta aqui:
Para cambiar de color cada cuadro, le ponia a cada uno el siguiente codigo

Private Sub Realizador_GotFocus()
Me!Realizador.BackColor = 13565436
End Sub

Private Sub Realizador_LostFocus()
Me!Realizador.BackColor = -2147483643
End Sub

hasta aqui voy bien, el problema era que no me apetecia hacerlo interminable, y con mucho codigo para hacer esa tonteria, asi que lo que yo queria era detectar el control que tenia el enfoque y cambierle el color.
Bien, con el siguiente codigo sabemos que control tiene el enfoque y lo asignamos a una variable

Private Sub Form_Current()
Texto1.SetFocus
Dim CltControlActual As Control
Dim NombreControl As String
Set CtlControlActual = Screen.ActiveControl
NombreControl = CtlControlActual.Name
Texto10 = NombreControl
End Sub

Pero ahora digo yo:
El codigo anterior me coloca en un cuadro de texto el nombre del control activo "AL CARGAR EL FORMULARIO" ¿como detecto yo cada vez que se cambia el enfoque? ¿Tengo que hacer un Requery cada vez? ¿y si mi formulario es para hacer una consulta, esto seria eterno?
Bueno a ver si entre todos damos con una buena solucion.
Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obtener Foco

Publicado por Mauricio Baeza (12 intervenciones) el 04/10/2000 00:00:00
´Prueba el siguiente codigo, debes de tener
´cinco cuadro de testo que se llamen txtTexto1
´hasta el txtTexto5, para probarlo en tu codigo
´solo reemplaza el nombre de tu cuadro en cada
´evento GostFocus y LostFocus

Option Compare Database
Option Explicit

Private Sub txtTexto1_GotFocus()
CambiaColor txtTexto1, True
End Sub

Private Sub txtTexto1_LostFocus()
CambiaColor txtTexto1, False
End Sub

Private Sub txtTexto2_GotFocus()
CambiaColor txtTexto2, True
End Sub

Private Sub txtTexto2_LostFocus()
CambiaColor txtTexto2, False
End Sub

Private Sub txtTexto3_GotFocus()
CambiaColor txtTexto3, True
End Sub

Private Sub txtTexto3_LostFocus()
CambiaColor txtTexto3, False
End Sub

Private Sub txtTexto4_GotFocus()
CambiaColor txtTexto4, True
End Sub

Private Sub txtTexto4_LostFocus()
CambiaColor txtTexto4, False
End Sub

Private Sub txtTexto5_GotFocus()
CambiaColor txtTexto5, True
End Sub

Private Sub txtTexto5_LostFocus()
CambiaColor txtTexto5, False
End Sub

´Con este procedimiento le pasamos como
´argumento un cuadro de texto y un valor
´boleano para saber si entro o salio del
´cuadro de texto

Private Sub CambiaColor(ByRef CuadroTexto As TextBox, ByVal Entrar As Boolean)
If Entrar Then
CuadroTexto.BackColor = RGB(255, 255, 0)
Else
CuadroTexto.BackColor = RGB(255, 255, 255)
End If
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar