Olá Bruno,
eu fiz isso, mas via código mesmo...
A idéia é a seguinte:
FTamanhoColunas: Array of integer; //Mantém o tamanho original das colunas
quando é maximizado
Mantenha o tamanho original de cada coluna em um Array dinâmico, para quando
for restaurado voltar elas. Pode utilizar o evento Loaded;
procedure SetTamanhoOriginalColunas;
var i: Integer;
begin
//Inicializa o tamanho original de cada coluna do grid
SetLength(FTamanhoColunas, Columns.Count);
for i := 0 to Columns.Count -1 do
FTamanhoColunas[i] := Columns.Items[i].Width;
end;
e na...
procedure WMSize(var Message: TWMSize); message WM_SIZE;
var i, Dif, Aux, TamanhoTotal: Integer;
Rateio: Extended;
begin
inherited;
//Exit;
//Tirei fora por enquanto pq, passa muitas vezes por aqui
if (Not Assigned(Columns)) or
(Not FReSizeMaximizar) or
(csReading in ComponentState) or
(csLoading in ComponentState) or
(csDesigning in ComponentState) then
Exit;
//ShowMessage('TClDbGrid.WMSize');
//Ajusta o tamanho das colunas do grid, quando o formulário é maximizado
//para não sobrar espaços em branco dentro do grid
TamanhoTotal := 0;
With Columns do
begin
for i := 0 to Count -1 do
if Items[i].Visible then
Inc(TamanhoTotal, Items[i].Width +1); // +1 pq tem a linha que
separa a coluna
if ((Width - LARGSCROOL) TamanhoTotal) and (TamanhoTotal 0) then
begin
Dif := (Width - LARGSCROOL) - TamanhoTotal; // contém a diferença a
ser ratiada nas colunas do dbgride
Aux := Dif;
for i := 0 to count - 1 do
if Items[i].Visible then
begin
Rateio := Dif * (items[i].Width / TamanhoTotal);
Items[i].Width := Items[i].Width + Round(Rateio);
Aux:= Aux - Round(Rateio);
end;
Items[count - 1].Width := Items[count - 1].width + Aux; // última
coluna recebe uma possível diferença
end
else if (Width - LARGSCROOL) TamanhoTotal then //Restaurando o tamanho,
depois de ter maximizado
for i := 0 to count - 1 do
if Items[i].Visible then
Items[i].Width := FTamanhoColunas[i];
end;
Deve ter código sobrando aí no meio, pois tenho várias outras funcionalidades
implementadas.
Mas é só tirar o que não compilar.
Att,
Celso Lorenzetti
Analista de Sistemas
msn: [EMAIL PROTECTED]
--
SysRS Tecnologia da Informação Ltda.
www.sysrs.com.br
- Original Message -
From: Bruno Antonio Ribeiro de Souza
To: Grupo Delphi
Sent: Tuesday, April 24, 2007 10:00 AM
Subject: [delphi-br] Resize na coluna do DBGrid
Olá amigos
Estou desenvolvendo uma aplicação que em todos os forms se usa um
DBGrid... gostaria de saber se tem como dar um resize nas _*colunas*_
para que ele se ajuste ao tamanho do DBGrid...
... Estou utilizando MDI e tem grid que tem 3 colunas, outro Grid 4
colunas... Então fica muito estranho quando tem 3 colunas e um espaço em
branco depois até terminar o Grid...
Obrigado
Bruno Souza
CEPEA - Centro de Estudos Avançados em Economia Aplicada
ESALQ/USP
[As partes desta mensagem que não continham texto foram removidas]