PDA

Ver la Versión Completa : colorear filas dbgrid


merlin
17-12-2004, 18:07:07
hola a todos los foreros.

mi problema creo q es muy tipico por lo q he visto en otros hilos aunq en ningunno he encontrao la manera de solucionarlo.

Yo tengo dbgrid relaccionado con una tabla (dbase) lo q quiero es q en los registro q el campo tipo='S' se coloreen de rojo y los de tipo='E' que se queden con el color de siempre mi codigo es el siguiente:

procedure TAPUNTES.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if (TAPUNTES.FieldByName ('TIPO').AsString ='S') and (gdSelected in State) then
DBGrid1.Canvas.Font.Color := clRed;

DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

pero mi problema es que no lo termina de hacer bien porque cuando yo habro el formulario solo me ha pintado el ultimo que cumple la condicion y todos los demas los ha dejado con el color de siempre lo q si hace es q cuando me muevo por el dbgrid los colorea pero solo cuando estoy en el si me cambio se quita el color ¿como puedo hacer para q de primeras me salgan todos pintalos y q no pierdan el color cuando paso por ellos?

roman
17-12-2004, 18:30:55
[...]los colorea pero solo cuando estoy en el si me cambio se quita el color


Pues hace lo que le estás diciendo:




if (TAPUNTES.FieldByName ('TIPO').AsString ='S') and (gdSelected in State) then
DBGrid1.Canvas.Font.Color := clRed;



Es decir, le estás diciendo, "pon la fuente de color rojo si tipo='s' y la fila está seleccionada"

Quita esa condición para que te ponga el texto rojo en cualquier momento.

// Saludos