DBGrid - cores diferentes por campo

Top  Previous  Next

// Propriedade no ObjectInspector

 

   DBGrid.DefaultDrawing := False;

 

// Evento 

 

procedure TForm2.DBGrid1DrawColumnCell;

begin

     If Table1.FieldbyName('Valor').AsFloat < 0 then // O valor é negativo...

        DBGrid1.Canvas.Font.Color := clRed

     else

        DBGrid1.Canvas.Font.Color := clBlack;

 

    If State=[gdSelected,gdFocused] then // Se estive marcado

    Begin

         If Table1.FieldbyName('Valor').AsFloat < 0 then // O valor é negativo...

            DBGrid1.Canvas.Font.Color := clAqua

         else

            DBGrid1.Canvas.Font.Color := clYellow;

         DBGrid1.Canvas.Brush.Color:= clBlack; /// Fundo preto

    end;

 

     If DataCol=0 then // DataCol: 0=primeira columa, 1=segunda...

       DBGrid1.DefaultDrawDataCell(Rect, Table1.FieldbyName('Descricao'), State)

     else

       DBGrid1.DefaultDrawDataCell(Rect, Table1.FieldbyName('Valor'), State)

    // OU PODE USAR ASSIM

 

    DBGrid1.DefaultDrawDataCell(Rect, Table1.Fields[ DataCol ], State);

    // A ordem da DBGrid.TColums deve ser a mesma da TFieldsEditor

end;

 

 

 

// Outro...

 

    DBGrid3.Canvas.Font.Color := clBlack;

    If Tb_Quarto2ReservadoHoje.asBoolean then DBGrid3.Canvas.Font.Color := clRed;

    If State=[gdSelected,gdFocused] then // Se estive marcado

    Begin

         DBGrid3.Canvas.Font.Color := clYellow;

         DBGrid3.Canvas.Brush.Color:= clNavy; /// Fundo azul

         If Tb_Quarto2ReservadoHoje.asBoolean then DBGrid3.Canvas.Font.Color := clAqua;

    end;

    DBGrid3.DefaultDrawDataCell(Rect, Tb_Quarto2NQuarto, State)