Redimencionar as colunas do DBGrid conforme o conteúdo

Delphi

07/10/2005

Tem alguma propriedade no DBGrid que faz com que ele redimencione as suas colunas conforme o conteúdo?


Mkoch

Mkoch

Curtidas 0

Respostas

Bruno Belchior

Bruno Belchior

07/10/2005

Que eu conheça não... você pode fazer isso dinamicamente em Run Time... No OnDrawCollumnCell:
var
  Tamanho: Smallint;
begin
  with DBGrid do
  begin
    Tamanho := Canvas.TextWidth(Column.Field.AsString);
    if Column.Width < Tamanho then
      Column.Width := Tamanho + 10
  end;
end;



GOSTEI 0
Armando.boza

Armando.boza

07/10/2005

Existe uma opção:

DBGRID > OPTIONS > DGCOLUMNRESIZE (true ou false)


Mas não sei exatamente como ela se comporta ... dá uma testada.


GOSTEI 0
Mkoch

Mkoch

07/10/2005

O código do amigo [b:f93bdafd40]Bruno Belchior[/b:f93bdafd40] funcionou, é isso mesmo que eu queria, mas o DBGrid fica maluco parece que entra em loop e fica redesenhando a tela constantemente.


GOSTEI 0
Mkoch

Mkoch

07/10/2005

Alguem saberia uma solução para este problema?


GOSTEI 0
Massuda

Massuda

07/10/2005

...o DBGrid fica maluco parece que entra em loop e fica redesenhando a tela constantemente.
Isso acontece porque está usando o evento OnDrawColumnCell... quando você muda a largura da coluna, a célula precisa ser redesenhada e você muda a largura de novo, etc, entrando em loop.

Dê uma olhada [url=http://forum.clubedelphi.net/viewtopic.php?t=67138]neste tópico[/url]. Ele começa falando de ComboBoxes mas acabou caindo no DBGrid; não tem exemplo, mas acho que tem as explicações necessárias.


GOSTEI 0
POSTAR