eliminar espaço em brando no dbgrid
ao dimensionar um form que tenha um dbgrid, fica um espaço em branco depois da última coluna. Como poderia eliminar isso, aumentando uma das colunas para preencher o espaço restante ?
abraços
Nirlan
Nirlan Fundao
Curtidas 0
Respostas
Guinther Pauli
19/11/2008
Olá Nirlan,
Pelo que entendi, quando você aumenta o tamanho form o dbgrid não vem junto e fica o espaço...
Para resolver esse problema, vc pode alinhar o DbGrid setando a propriedade align dele para AllBotton assim ele vai ficar sempre abaixo e pegando todo os espaço lateral.
Aguardo retorno,
abs
GOSTEI 0
Nirlan Fundao
19/11/2008
Não é isso. O DBGBRID já está com allCliente. Me refiro ao espaço dentro do dbgrid. Veja a imagem em anexo.
GOSTEI 0
Guinther Pauli
19/11/2008
Olá Nirlan,
Não tem como ocultar esse espaço mesmo, a única maneira é acrescentar mais uma informação no seu DbGrid, ou seja mais uma coluna, caso exista, ou diminuir o tamanho do DBGrid, tirar a propriedade Align para AlCuston ou AlNone, mas ai ficaria um espaço do lado que é o tamanho do form, pelo que vejo aí vc pode diminuir esse form um pouco já vai diminuir bastante o espaço, dessa forma resolve o problema.
Outra solução não existe,
Aguardo seu retorno, ok ?
abs
GOSTEI 0
Nirlan Fundao
19/11/2008
Depois de postar esta dúvida, eu localizei no meu computador um teste de dica que nunca chequei a utilizar posteriomente. Acho que essa dica foi você que postou, não sei aonde. Possivelmente em 2004/2005
procedure TDM.fixDBGridColumnsWidth(const DBGRID: TevDBGRID3d);
var
i: integer;
vTotWidth : integer;
vVarWidth : integer;
vColumn : tcolumn;
vResizablecolumncount : integer;
begin
// largura total de todas as colunas antes do redimensionamento
vTotWidth := 0;
// quantas colunas precisam de auto-redimensionamento
vResizableColumnCount := 0;
for i := 0 to -1 + DBGRID.Columns.Count do
begin
vTotWidth := vTotWidth + DBGRID.Columns[i].Width;
if DBGRID.Columns[i].Field.Tag <> 0 then
Inc(vResizableColumnCount);
end;
// adiciona 1px para a linha de separação de colunas
if dgcollines in DBGRID.Options then
vTotWidth := vTotWidth + DBGRID.Columns.Count;
// adiciona indicador de largura
if dgIndicator in DBGRID.Options then
vTotWidth := vTotWidth + IndicatorWidth;
// largura recebe o valor de "left"
vVarWidth := DBGRID.ClientWidth - vTotWidth;
// distribuição por igual da vVarWidth
// para todas as colunas auto-redimensionáveis
if vResizableColumnCount > 0 then
vVarWidth := vVarWidth div vResizableColumnCount;
for i := 0 to -1 + DBGRID.Columns.Count do
begin
vColumn := DBGRID.Columns[i];
if vColumn.Field.tag <> 0 then
begin
vColumn.Width := vColumn.Width + vVarWidth;
if vColumn.Width < vColumn.Field.Tag then
vColumn.Width := vColumn.Field.Tag;
end;
end;
end;
Podemos encerrrar este chamado.
procedure TDM.fixDBGridColumnsWidth(const DBGRID: TevDBGRID3d);
var
i: integer;
vTotWidth : integer;
vVarWidth : integer;
vColumn : tcolumn;
vResizablecolumncount : integer;
begin
// largura total de todas as colunas antes do redimensionamento
vTotWidth := 0;
// quantas colunas precisam de auto-redimensionamento
vResizableColumnCount := 0;
for i := 0 to -1 + DBGRID.Columns.Count do
begin
vTotWidth := vTotWidth + DBGRID.Columns[i].Width;
if DBGRID.Columns[i].Field.Tag <> 0 then
Inc(vResizableColumnCount);
end;
// adiciona 1px para a linha de separação de colunas
if dgcollines in DBGRID.Options then
vTotWidth := vTotWidth + DBGRID.Columns.Count;
// adiciona indicador de largura
if dgIndicator in DBGRID.Options then
vTotWidth := vTotWidth + IndicatorWidth;
// largura recebe o valor de "left"
vVarWidth := DBGRID.ClientWidth - vTotWidth;
// distribuição por igual da vVarWidth
// para todas as colunas auto-redimensionáveis
if vResizableColumnCount > 0 then
vVarWidth := vVarWidth div vResizableColumnCount;
for i := 0 to -1 + DBGRID.Columns.Count do
begin
vColumn := DBGRID.Columns[i];
if vColumn.Field.tag <> 0 then
begin
vColumn.Width := vColumn.Width + vVarWidth;
if vColumn.Width < vColumn.Field.Tag then
vColumn.Width := vColumn.Field.Tag;
end;
end;
end;
Podemos encerrrar este chamado.
GOSTEI 0