Página 1 de 1

Grid redefinição automática do tamanho das colunas

Enviado: 22 Mar 2016 23:08
por microvolution
Pessoal, boa noite!
Resolvi abrir este tópico pois não encontrei algo semelhante.
Alguém sabe como fazer com que as colunas de um GRID tenham seus tamanhos ajustados automaticamente em relação ao tamanho dos campos e/ou título (cabeçalhos) das colunas?
Este é parte do nosso código atual:

Código: Selecionar todos

FUNCTION grid_data_widths()
LOCAL awidths := {}

   awidths := { 130, 280, 30, 30, 30, 30,  100, 100, 150, 150, 100, 150, 100, 100, 100  }

RETURN awidths
Valeu!
PS: Outra coisa, se não for congestionar o fórum... (caso contrário, Toledo/moderador(es), por favor, leve para o devido lugar, ou exclua, ou tome as providências que convier necessárias!)
1 - Tô percebendo que o GRID tá muito lento, alguém sabe como resolver?
2 - Como ocultar ou não usar alguns campos do arquivo que são desnecessários?
3 - Como não permitir a alteração dos campos? pois se é pra consulta apenas como antigo BROWSE (clipper) que é apenas consultivo.
4 - Como substituir o set filter (se é que ele está incluso no meu GRID por uma coisa mais rápida)?
5 - Ao usar a barra de rolagem (horizontal), as informações somem;
6 - Como transferir o que foi consultado para o formulário anterior?
7 - Como usar a funçao de criação do GRID para ser usado por outras pesquisas/arquivos, como a gente fazia com o BROWSE?
Mais uma vez obrigado pelo fórum existir, pois mais 80% do que tenho aprendido ou CTRL+C/V foi retirado daqui!!!

Grid redefinição automática do tamanho das colunas

Enviado: 24 Mar 2016 09:09
por Toledo
microvolution escreveu:Alguém sabe como fazer com que as colunas de um GRID tenham seus tamanhos ajustados automaticamente em relação ao tamanho dos campos e/ou título (cabeçalhos) das colunas?
Amigo, praticamente é uma questão de matemática, mas o primeiro a fazer é como saber o tamanho do campo e do título?

Bom, do título é fácil, é só usar a função LEN() em cada elemento da matriz que tem os títulos da GRID. O problema será o tamanho do campo.
Ou você usa o DbStruct() que mostra o tamanho do campo, ou cria um uma matriz com o tamanho dos campos, por exemplo:

Código: Selecionar todos

aTamCmps:={6,40,40,15,7,etc}
Agora qual dos dois (campo ou título) é o maior... função MAX() ajuda, por exemplo:

Código: Selecionar todos

nTamanho:=MAX(aTamCmps[1],LEN(aheaders[1]))*9
O *9 no código acima é para ajustar o tamanho em pixel. Este valor (9) pode ser alterado ao seu gosto, caso o ajuste tenha sido demais ou pouco.

Bom, isto é só uma ideia do que você pode fazer.

Sua outras dúvidas, o melhor a fazer é consultar o manual da HMG... para GRID veja C:\hmg.3.4.2\DOC\data\Grid.htm
microvolution escreveu:2 - Como ocultar ou não usar alguns campos do arquivo que são desnecessários?
Amigo, você determina em COLUMNFIELDS os campos que serão apresentados na GRID. Você pode colocar (ou não) os campos que quer.
microvolution escreveu:3 - Como não permitir a alteração dos campos?
No manual acima da GRID tem uma propriedade chamada ALLOWEDIT, veja C:\hmg.3.4.2\DOC\data\allowedit.htm

As demais dúvidas vai depender do código que você montou para fazer a GRID, então fica difícil dar um exemplo.

Abraços,

Grid redefinição automática do tamanho das colunas

Enviado: 24 Mar 2016 12:32
por Claudio Soto
En HMG existe:

<ParentWindowName>.<GridControlName>.ColumnWIDTH( nColIndex ) := [ nColumnWidth ] | [ GRID_WIDTH_AUTOSIZE ] |
[ GRID_WIDTH_AUTOSIZEHEADER ]

Grid redefinição automática do tamanho das colunas

Enviado: 24 Mar 2016 12:43
por Toledo
Por isto que é importante ler o manual (DOC) da HMG. Lá no manual da GRID tem estas informações que o Dr Claudio Soto passou na mensagem dele.

Abraços,

Grid redefinição automática do tamanho das colunas

Enviado: 04 Dez 2018 19:31
por Carlos Susviela
Pode ser útil se alguém vier pesquisar.

Código: Selecionar todos


        //  ajuste automático das colunas da Grid

	For i := 1 to ( Main.grid_1.ColumnCOUNT )

		Main.grid_1.ColumnWIDTH( i ) := GRID_WIDTH_AUTOSIZE

	NEXT i
	
Deixa o desenho da grid um pouco lenta.