![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
pintar linea en grid segun condicion
amigo tengo 2 dias dandole vuenta a como pintar una linea dentro del stringrid segun su condicion pero aun no lo logro.
mi stringrid se alimenta de una base de dato y lo que quiero lograr ejemplo: Si el valor del campo es igual a 'Pendiente' entonces que me pinte la linea, me cambie el color de la fuente y me coloque el fuente en negrita pero a pezar de mi consulta e investigaciones aun no lo logro. le envio codigo con lo que lo estoy intentando hacer en este momento pero nada que funciona.
|
|
#2
|
|||
|
|||
|
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. |
|
#3
|
|||
|
|||
|
Cita:
|
|
#4
|
|||
|
|||
|
Esto lo acabo de probar en FMX con StringGrid y me funciona en StringGrid1DrawColumnCell
Sacado de aqi: https://stackoverflow.com/questions/...grid-row-color Código:
var
aRowColor: TBrush;
aNewRectF: TRectF;
begin
aRowColor := TBrush.Create(TBrushKind.Solid, TAlphaColors.Alpha);
if (StringGrid1.Cells[7, Row] = '1') then
aRowColor.Color := TAlphaColors.Green
else
aRowColor.Color := TAlphaColors.Red;
aNewRectF := Bounds;
aNewRectF.Inflate(3, 3);
Canvas.FillRect(aNewRectF, 0, 0, [], 1, aRowColor);
Column.DefaultDrawCell(Canvas, Bounds, Row, Value, State);
aRowColor.free;
Última edición por chenech fecha: 09-03-2023 a las 13:52:15. |
|
#5
|
||||
|
||||
|
Con un componente de 1st Class lo logro en el evento OnDrawDataCell
|
|
#6
|
|||
|
|||
|
Cita:
|
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Pintar Celdas DBGrid si cumple cierta condicion. | Lenny | Varios | 4 | 07-04-2022 01:49:10 |
| No mostrar form segun condicion en el create | jars | Varios | 7 | 25-04-2014 18:01:43 |
| quiero Agrupar según condición FastReport | vicentnew | Impresión | 5 | 18-07-2012 01:41:07 |
| Consulta que obtiene campos de una tabla u otra según condición | Gabo | SQL | 10 | 20-08-2007 08:53:02 |
| Cambiar de color una fila de un Dbgrid segun una condicion... | hook | Varios | 5 | 12-07-2005 23:40:36 |
|