09-03-2023
|
Miembro
|
|
Registrado: oct 2022
Posts: 143
Reputación: 2
|
|
Cita:
Empezado por chenech
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);
}
}
//---------------------------------------------------------------------------
|
gracias por tu respuesta, pero en DBgrid no tengo problema eso se hace de forma facil pero el problema lo tengo en el stringrid que no consigo ni forma ni manera de hacerlo.
|