Mudar a cor da fonte no DBGrid
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
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
Curtidas 0
Melhor post
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;
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
02/02/2004
Tente assim:
Para mudar a fonte da linha inteira: [b:9c608ad370]onGridDrawDataCell[/b:9c608ad370]
Para mudar a linha inteira: [b:9c608ad370]onGridDrawDataCell[/b:9c608ad370]
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