Cambiar de color un TextBox al recibir o perder el enfoque - Api GetFocus

Iniciado por EddyW, 30 Enero 2010, 07:02 AM

0 Miembros y 1 Visitante están viendo este tema.

EddyW

Cambiar de color un TextBox al recibir o perder el enfoque - Api GetFocus

Esta vez no es una funcion, todo el papeleo lo cumple un Timer..
Es sencillo usamos la Api GetFocus para saber el Handle del objeto tiene el enfoque, luego recorremos todos los controles del form1 buscando a que objeto pertenece el Handle, al encontrarlo verificamos si es un TextBox con la función TypeName propia de VB6, sin mas que decir un Screen y el código:
(Aclaro que el ejemplo esta basado en la descripcion de la OCX de (Este Link))


Es posible cambiar el color, no es complicado hacerlo..
El codigo; declaramos la API y luego añadimos un Timer1 a nuestro Form1 y establecemos la propiedad Interval a 1:
Private Declare Function GetFocus Lib "user32" () As Long

Private Sub Timer1_Timer()
On Error Resume Next
Dim Obj As Object, BackBackup As Long
For Each Obj In Form1.Controls
    If (TypeName(Obj) = "TextBox" Or TypeName(Obj) = "ComboBox") _
    And GetFocus = Obj.hWnd Then
        If Err Then
            Err.Clear
        Else
        BackBackup = Obj.BackColor
        Do
        If Obj.hWnd = GetFocus Then
            Obj.BackColor = vbGreen
        Else
            Obj.BackColor = BackBackup
            Exit Sub
        End If: DoEvents
        Loop
        End If
    End If
    DoEvents
Next
End Sub

Espero les guste y les sea de utilidad.. ;)

SaluDOS!!!

BlackZeroX

Para que privarse con esa api para algo tan sencillo si se tienen la los eventos, digo esa api estaría bien pero en otras utilidades pero para un textbox o controles donde tenemos acceso y sus eventos están al pie de utilidad y sirven esa api esta demás, digo de ejemplo esta bien pero realmente esta demás.

Código (vb) [Seleccionar]


Private Sub Text1_GotFocus()
    '  //  Eventos
End Sub

Private Sub Text1_LostFocus()
    '  //  Eventos
End Sub



Temibles Lunas!¡.
.
The Dark Shadow is my passion.

EddyW

Si.., pero por lo menos a mi no me gustaría tener un montón de eventos GotFocus y LostFocus si es que usaría muchos TextBox..
y la idea no solo se aplica en TextBox puede ser en otros controles también ;)

SaluDOS!!!

BlackZeroX

Cita de: 3D1 en  3 Febrero 2010, 03:11 AM
Si.., pero por lo menos a mi no me gustaría tener un montón de eventos GotFocus y LostFocus si es que usaría muchos TextBox..
y la idea no solo se aplica en TextBox puede ser en otros controles también ;)

SaluDOS!!!

para eso existen los módulos de clase ¬¬", con un poquito de imaginacion me entiendes xP

Sombrías Lunas!¡.
.
The Dark Shadow is my passion.

SOMBRIO

Esta buena la info   :P pero un intervalo de tiempo tan pequeño de 1 con eso volvemos loca la maquina estria bien un intervalo de 50 o 100 Saludos
IRQL less or equal