Títulos com mais de uma linha no DBGrid


Um dos problemas do TDbGrid é que ele não contem uma propriedade para poder colocar o título das colunas em várias linhas. Umas de suas classes ancestrais possui várias propriedades protegidas que possibilitam alterar algumas características do TDbGrid. Esta classe é a TCustomGrid.
Vamos começar;
type
  TAccessDBGrid = class(TCustomGrid);
end;

No evento de OnDrawColumnCell
var 
  wDescricao01, wDescricao02: string;
begin
  with TAccessDBGrid(DBGrid1) do begin
    RowHeights[0] := 32;
    Canvas.Brush.Style := bsSolid;
    Canvas.Brush.Color := clBtnFace;
    Canvas.FillRect(Rect);
    case Column.Index of
     0: begin
        Column.Title.Caption := EmptyStr;
        wDescricao01 := FormatDateTime('dd/mm/yyyy', Date);
        wDescricao02 := FormatDateTime('dddd', Date);
     end;
     1: begin
        Column.Title.Caption := EmptyStr;
        wDescricao01 := 'Linha 01';
        wDescricao02 := 'Linha 02';
     end;
    end;
    Canvas.TextOut(Rect.Left + 2, 2, wDescricao01);
    Canvas.TextOut(Rect.Left + 2, 16, wDescricao02);
    Canvas.Brush.Color := clWhite;
  end;
end;


Qualquer duvida ou sugestão de próxima postagem no meu e-mail ana.paulanovello@hotmail.com

4 comentários:

  1. Ana, tudo bem?
    Através deste deste exemplo, apliquei em meu projeto e deu tudo certo.
    Agora eu gostaria de saber se você sabe me dizer o pq que quando eu passo o mouse por cima dos títulos, as descrições dos títulos somem.

    Obrigado.
    Marlon!

    ResponderExcluir
  2. Ana, encontrei o motivo, mas só resolveu em partes...
    No "OntitleClick" do meu DBGrid, eu tenho uma função que uso p/ ordenar as colunas do DBGrid, quando eu removo esta função, eu consigo o que quero, mas deixo de ter a ordenação por coluna...

    Vou continuar na luta aqui kkkk

    ResponderExcluir
    Respostas
    1. Opa! Obrigada por reportar, vou verificar aqui com a ordenação no "Title" como se comporta

      Excluir