Esto en en VCL, no se si en FMX será igual. Yo lo tengo pero en C++ Builder y lo hago en DrawColumnCell, si alguien lo puede convertir a Delphi:
Si es NOMCLI un color, si es PRT otro, etc,, y si es la seleccionada rojo y negrita, y para la columna 0 otro color, espero te sirva.
Código:
void __fastcall TForm416::DBGrid1DrawColumnCell(TObject *Sender, const TRect &Rect,
int DataCol, TColumn *Column, TGridDrawState State)
{
TDataSet *dataset = Column->Field->DataSet;
if(dataset->FieldByName("NOMCLI")->AsString.Length() < 1)
DBGrid1->Canvas->Brush->Color = clCream;
else
{
if(dataset->FieldByName("NOMHAB")->AsString == "¡¡¡ BLOQUEADA !!!")
DBGrid1->Canvas->Brush->Color = clSilver;
else
DBGrid1->Canvas->Brush->Color = clSkyBlue;
}
if(dataset->FieldByName("TIPOHAB")->AsString.SubString(1, 3) == "PRT")
DBGrid1->Canvas->Brush->Color = clOlive;
// Para lo seleccionado cambio el color a rojo y negrita
if(State.Contains(Grids::gdSelected))
{
DBGrid1->Canvas->Font->Color = clRed;
DBGrid1->Canvas->Font->Style = TFontStyles() << fsBold;
}
DBGrid1->DefaultDrawColumnCell(Rect, DataCol, Column, State);
// Aqui cambio solo la primera columna si es S o P
if(DataCol == 0)
{
if(dataset->FieldByName("LIMPIA")->AsString == "S")
DBGrid1->Canvas->Brush->Color = clGreen;
else
{
if(dataset->FieldByName("LIMPIA")->AsString == "P")
DBGrid1->Canvas->Brush->Color = clYellow;
else
DBGrid1->Canvas->Brush->Color = clRed;
}
DBGrid1->DefaultDrawDataCell(Rect, Column->Field, State);
}
}
//---------------------------------------------------------------------------