¿Cambiarle el color a una fila de un DBgrid?

Saludos tengo curiosidad en cambiarle el fondo a una determinada fila de un dbgrid, es decir, por ejemplo si yo tengo en el DBgrid todas personas de POR compañía me gustaría poner de color azul los hombres y las mujeres rosado.
1

1 respuesta

Respuesta
1
Efectivamente, yo te digo como recorrer el dbgrid y te he dejado a tí el que le pongas los condicionantes que quieras, en este caso en la linea dbgrid.backcolor = Azul deberías poner los if que correspondan. Ten en cuenta que todos los grid te devuelven solamente el valor de la celda activa, por tanto primero deberas posicionarte en la fila, a continuación posicionarte en la celda que contiene el valor que deseas comparar y por ultimo recorrer toda la fila para aplicar el color correspondiente.
Podrías ser un poco más explicito, porque no me funciona, mira bien en si yo tengo que preguntarle en el DBGRID cuando en una fila hay un valor MASCULINO en este caso asignarle el fondo azul y si en una fila hay un valor FEMENINO asignarle el fondo rojo. Pero tu solo me recorres las filas y no me especificas...
Bien, es fácil, como supongo que rellenas el dbgrid a través de un data control debes recorrer el grid y cambiar el fondo con la siguiente instrucción
For ContadorF = 1 to FilasDBGrid
For ContadorC = 1 to ColumnasDBGrid
DBGrid.Col = ContadorF
DBGrid.Row = ContadorC
DBGrid.Backcolor = Azul
next c
next F
Tienes razón, en un dbgrid cambia el color de todo el grid, pero he probado utilizando un datagrid, y con la propiedad datagrid1. Cellbackcolor puedes cambiar el color de fondo. Lo siento pero yo siempre he utilizado msflexgrid, ese es el motivo del patinazo.
Mira este código esto me busca en la celda el sexo que yo quiero y lo encuentra e incluso lo puedo sustituir pero hay un solo problema que cuando le doy a cambiar el BACKCOLOR para cambiárselo a esa sola fila, se lo cambia a todo el dbgrid, lo mismo pasa con el forecolor, a que se debería
Option Explicit
Dim i As Integer, j As Integer
Dim col As Column
Private Sub Command1_Click()
Set col = DBGrid1.Columns("sexo")
While i <= Data1.Recordset.RecordCount
If DBGrid1.Columns("sexo") = "mu" Then
With col
.Text = "f"
End With
data1.UpdateRecord
End If
If i >=Data1.Recordset.RecordCount Then
Data1.Refresh
Exit Sub
End If
i = i + 1
Data1.Recordset.MoveNext
Wend
oks, pero puedes enviarme un ejemplo con MSFLEXGRID, ya que nunca lo he utilizado y con una explicación si no es mucha molestia
El msflexgrid funciona igual que estás haciendo con dbgrid, abres el recordset, dimensionas el grid según el recordcount del recorset y a continuación vas pasando por cada fila y columna, como en el primer ejemplo que te mandé y das valor y formato a cada celda con las propiedades cellbackcolor, cellforecolor y value.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas