Ver Mensaje Individual
  #3  
Antiguo 09-03-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Reputación: 2
giantonti1801 Va por buen camino
Cita:
Empezado por chenech Ver Mensaje
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.
Responder Con Cita