



Problema: Como ocupar todo o espaço disponível no DBGrid?
Muitas vezes, quando maximizamos uma tela, fica um espaço em branco se utilidade,
outras vezes não queremos que o Grid fique com rolagem.
Logo, é necessário uma forma de dimensionar automaticamente as colunas.
Vamos ao código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | procedure DimensionarGrid(dbg: TDBGrid); type TArray = Array of Integer; procedure AjustarColumns(Swidth, TSize: Integer; Asize: TArray); var idx: Integer; begin if TSize = 0 then begin TSize := dbg.Columns.count; for idx := 0 to dbg.Columns.count - 1 do dbg.Columns[idx].Width := (dbg.Width - dbg.Canvas.TextWidth('AAAAAA') ) div TSize end else for idx := 0 to dbg.Columns.count - 1 do dbg.Columns[idx].Width := dbg.Columns[idx].Width + (Swidth * Asize[idx] div TSize); end; var idx, Twidth, TSize, Swidth: Integer; AWidth: TArray; Asize: TArray; NomeColuna: String; begin SetLength(AWidth, dbg.Columns.count); SetLength(Asize, dbg.Columns.count); Twidth := 0; TSize := 0; for idx := 0 to dbg.Columns.count - 1 do begin NomeColuna := dbg.Columns[idx].Title.Caption; dbg.Columns[idx].Width := dbg.Canvas.TextWidth (dbg.Columns[idx].Title.Caption + 'A'); AWidth[idx] := dbg.Columns[idx].Width; Twidth := Twidth + AWidth[idx]; if Assigned(dbg.Columns[idx].Field) then Asize[idx] := dbg.Columns[idx].Field.Size else Asize[idx] := 1; TSize := TSize + Asize[idx]; end; if TDBGridOption.dgColLines in dbg.Options then Twidth := Twidth + dbg.Columns.count; // adiciona a largura da coluna indicada do cursor if TDBGridOption.dgIndicator in dbg.Options then Twidth := Twidth + IndicatorWidth; Swidth := dbg.ClientWidth - Twidth; AjustarColumns(Swidth, TSize, Asize); end; |
Veja como é fácil a utilização do procedimento:
No evento OnResize do seu form, deixe conforme o exemplo abaixo
1 2 3 4 5 6 | procedure TForm1.FormResize(Sender: TObject); begin // É só informar o seu DBgrid DimensionarGrid( GridProdutos ); end; |
Fonte Base: https://marcosalles.wordpress.com/2011/03/08/ajustar-automaticamente-o-tamanho-das-colunas-do-dbgrid-delphi/
Giovani preparou um vídeo demonstrando a utilização da dica! Aproveite a já inscreva-se no nosso canal para ter acesso a mais conteúdos interessantes como este.
Dúvidas? Deixe o seu comentário!
Até o próximo post pessoal!