Fórum Cor de Valor Negativo no DBGrid #264726
10/01/2005
0
gostaria de mudar a cor da fonte de um valor negativo no meu DBGrid...
a rotina eu já tenho.. só que minha coluna são todas centralizadas e quando coloco a rotina abaxio, o registro que tem um valor negativo ficam todos desalinhados. Alguma sugestão ?
rotina usada:
procedure TFrm1.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if (VAlor < 0)then begin with DBGrid.Canvas do begin Font.Color := clRed; FillRect(Rect); TextOut(Rect.Left+2,Rect.Top,Column.Field.AsString); end; end; end;
Diogoalles
Curtir tópico
+ 0Posts
10/01/2005
Massuda
procedure TFrm1.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var S: string; begin if (VAlor < 0)then begin with DBGrid.Canvas do begin Font.Color := clRed; FillRect(Rect); S := Column.Field.AsString; DrawText(Handle, PChar(S), Length(S), Rect, DT_CENTER or DT_VCENTER); end; end; end;
Gostei + 0
10/01/2005
Diogoalles
obrigado pela dica
só que está me dando um erro q não consegui resolver
usei a mesma rotina que vc passou e ocorre o erro:
[color=red:e26e66bd3d][Error] Gcm931P.pas(330): Constant object cannot be passed as var parameter[/color:e26e66bd3d]
saberia me dizer o q é ?
obrigado
Diogo
Gostei + 0
10/01/2005
Diogoalles
o erro ocorre na linha:
DrawText(Handle, PChar(S), Length(S), [color=red]Rect[/color], DT_CENTER or DT_VCENTER);
e aponta onde diz ´Rect´
Gostei + 0
10/01/2005
Massuda
procedure TFrm1.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var S: string; R: TRect; begin if (VAlor < 0)then begin with DBGrid.Canvas do begin Font.Color := clRed; FillRect(Rect); S := Column.Field.AsString; R := Rect; DrawText(Handle, PChar(S), Length(S), R, DT_CENTER or DT_VCENTER); end; end; end;
Gostei + 0
11/01/2005
Diogoalles
essa rotina centraliza todas as colunas,
caso eu tenha uma coluna q deva ser alinhada a esquerda como eu posso encaixar nessa função?
obrigado
Gostei + 0
11/01/2005
Massuda
No mesmo evento OnDrawColumnCell, você pode tratar individualmente cada coluna conforme o valor de DataCol ou de Column.
Para ter diferentes alinhamentos, basta mudar o último parametro de DrawText conforme sua necessidade; DrawText alinha tanto na horizontal (esquerda, centro, direita) como na vertical (topo, centro, fundo) além de fazer algumas outras mágicas... veja mais detalhes [url=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_0odw.asp]neste link[/url].
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)