Mudar a cor da fonte no DBGrid

Delphi

02/02/2004

Oi pessoal!

Tenho uma tabela de contas a receber que quando o cliente efetua o pagamento e dado baixa na conta armazenando na tabela a situação como pago.
Gostaria de criar uma rotina de forma que quando der baixa na conta a mesma fique com a fonte em vermelho, sei como fazer isso somente em uma celula, gostaria que ficasse em toda linha.

tenho outra situação parecida mas ao inves de pintar a fonte e vemelho gostaria que a linha toda ficasse inativa.

Se alguém puder me ajudar com essas dúvidas agradeço


Josimar

Josimar

Curtidas 0

Melhor post

Pedro Campos

Pedro Campos

02/02/2004

Vou te mandar um padrao que uso quando preciso personalizar uma DBGrid. Este padrao deverá estar no evento OnDrawColumnCell da DBGrid. A partir daqui, vc deverá tratar as situações para a célula selecionada e para as não selecionadas (o ultimo else).

Um abraço

Pedro Campos

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
s: string;
begin
if gdSelected in State then // Celula selecionada
begin
(Sender as TDbGrid).Canvas.Brush.Color := clBlack;
(Sender as TDbGrid).Canvas.Font.Color := clWhite;
end
else
if gdFixed in State then // Celula fixa
begin
(Sender as TDbGrid).Canvas.Brush.Color := clBtnFace;
(Sender as TDbGrid).Canvas.Font.Color := clBlack;
end
else // demais celulas
begin
(Sender as TDbGrid).Canvas.Brush.Color := (Sender as TDBGrid).Color;
(Sender as TDbGrid).Canvas.Font.Color := (Sender as TDBGrid).Font.Color;
end
//
s := Column.Field.AsString;
if Column.Alignment = taRightJustify then
begin
SetTextAlign((Sender as TDBGrid).Canvas.Handle, TA_RIGHT);
(Sender as TDBGrid).Canvas.TextRect(Rect, Rect.Right-2, Rect.Top+2, s);
end
else
if Column.Alignment = taCenter then
begin
SetTextAlign((Sender as TDBGrid).Canvas.Handle, TA_CENTER);
(Sender as TDBGrid).Canvas.TextRect(Rect, (Rect.Left+Rect.Right) div 2, Rect.Top+2, s);
end
else
begin
SetTextAlign((Sender as TDBGrid).Canvas.Handle, TA_LEFT);
(Sender as TDBGrid).Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, s);
end;
end;


GOSTEI 1

Mais Respostas

Fabio.hc

Fabio.hc

02/02/2004

Tente assim:

Para mudar a fonte da linha inteira: [b:9c608ad370]onGridDrawDataCell[/b:9c608ad370]

procedure TForm1.GridDrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin
...
      Grid.Canvas.Font.Color:=clRed;
...
end;



Para mudar a linha inteira: [b:9c608ad370]onGridDrawDataCell[/b:9c608ad370]

procedure TForm1.GridDrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin
...
      Grid.Canvas.Brush.Color:=clRed;
...
end;



GOSTEI 0
POSTAR