Access - Identificar línea en una form ligada a un registro

 
Vista:

Identificar línea en una form ligada a un registro

Publicado por José Luís (2 intervenciones) el 24/08/2000 00:00:00
En una form de tipo continuo, ligada a una tabla, me gustaría que cuando el usuario entra o pincha un control, cambiara el color de fondo de TODOS los controles de ese registro (o sea, de la misma línea). Como que en una form de tipo continuo los controles se llaman igual para todas las líneas, no tengo idea de cómo se puede hacer.... Aparte de que con la scroll bar, la línea de color distinto ("iluminada" o "seleccionada") debe desplazarse.....

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
Imágen de perfil de Alejandro

Identificar línea en una form ligada a un registro

Publicado por Alejandro (4142 intervenciones) el 13/04/2023 22:42:10
Una forma de lograr esto es mediante el uso del evento 'Current' de la form. Este evento se dispara cada vez que se cambia de registro en la form, lo que nos permite identificar la línea que se está mostrando actualmente y cambiar el color de fondo de los controles de esa línea.

Para implementar esto, puedes seguir los siguientes pasos:

1. Agregar un nuevo módulo de código a tu base de datos de Access.
2. En este módulo, crear una función que tome como parámetro un objeto 'Form' y un valor entero que represente el número de línea a resaltar. Esta función debe iterar por todos los controles de la form y cambiar el color de fondo de los controles de la línea especificada.

1
2
3
4
5
6
7
8
9
10
11
12
Public Sub ResaltarLinea(formulario As Form, numLinea As Integer)
    Dim i As Integer
    For i = 0 To formulario.Controls.Count - 1
        If formulario.Controls(i).ControlType <> acLabel And formulario.Controls(i).ControlType <> acImage Then
            If formulario.Controls(i).Top / formulario.Section(acDetail).Height = numLinea Then
                formulario.Controls(i).BackColor = RGB(255, 255, 0) 'Cambiar el color de fondo a amarillo
            Else
                formulario.Controls(i).BackColor = formulario.Section(acDetail).BackColor 'Volver al color original de la form
            End If
        End If
    Next i
End Sub

3. En el evento 'Current' de la form, llamar a la función 'ResaltarLinea' y pasarle como parámetro la form y el número de línea actual:

1
2
3
Private Sub Form_Current()
    ResaltarLinea Me, Me.CurrentRecord
End Sub

De esta forma, cada vez que se cambie de registro en la form, se resaltará la línea correspondiente cambiando el color de fondo de los controles de esa línea a amarillo. También se cambiará el color de fondo de los controles de la línea anterior a su color original.
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