eliminar espaço em brando no dbgrid

19/11/2008

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

Nirlan Fundao

Curtidas 0

Respostas

Guinther Pauli

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

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

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

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.
GOSTEI 0
POSTAR