Como fazer alinhamento no DBGrid?
Do fórum ClubeDelphi:
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 minha rotina, o registro que tem valor negativo fica todo desalinhado
Você está usando a procedure TCanvas.TextOut que não alinha texto... use DrawText da API do Windows para alinhar o texto dentro de um retângulo:
1 procedure TForm1.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect; 2 DataCol: Integer; Column: TColumn; State: TGridDrawState); 3 var 4 S: string; 5 R: TRect; 6 begin 7 if Column.Field.AsDouble < 0 then begin 8 9 with DBGrid.Canvas do begin 10 11 Font.Color := clRed; 12 FillRect(Rect); 13 S := Column.Field.AsString; 14 R := Rect; 15 DrawText(Handle, PChar(S), Length(S), R, DT_CENTER or DT_VCENTER); 16 end; 17 end; 18 end;
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 neste artigo no MSDN.
Um comentário:
Valeu Massuda, Muito boa a Sua Dica
Usei em meu sistema Comercial.
Parabéns pela colaboração
Davi Ramos
Salvador-Bahia
Postar um comentário