Ver Mensaje Individual
  #2  
Antiguo 08-03-2023
chenech chenech is offline
Miembro
 
Registrado: dic 2013
Posts: 72
Reputación: 11
chenech Va por buen camino
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);
   }
}
//---------------------------------------------------------------------------

Última edición por chenech fecha: 08-03-2023 a las 15:53:11.
Responder Con Cita