Página 1 de 1

Acrescentar itens na Grid com Vetor para os campos

Enviado: 24 Out 2018 15:10
por rubens
Boa tarde..
Estou tentando fazer um rotina genérica para as consultas do meus grids.
Tenho essa linha para adicionar os itens no Grid

Código: Selecionar todos

consulta.Grid_1.AddItem( {CLI->CODIGO,CLI->NOME})
Preciso criar um vetor e usar esse vetor para adicionar itens.

Código: Selecionar todos

aCampos := {CLI->CODIGO,CLI->NOME}
Se coloco o nome do vetor direto dentro da função ADDITEM()

Código: Selecionar todos

consulta.Grid_1.AddItem(aCampos)
ele repete a descrição nos itens como na figura abaixo.
Grid repetindo descricao.png
Tentei colocar o nome do vetor entre parenteses ou com macro & e dá erro na compilação.
Como eu faço?

Obrigado
Rubens

Acrescentar itens na Grid com Vetor para os campos

Enviado: 24 Out 2018 20:27
por bjbernal
Você precisa criar UM LOOP para alimentar a grid com cada elemento do vetor.

nelementos := len(vetor)
For i = 1 to nelementos
sitem := vetor
form.grid.AddItem(sitem)
Next i

Acrescentar itens na Grid com Vetor para os campos

Enviado: 24 Out 2018 21:35
por Toledo
Rubens, se você colocar em aCampos todos os registros que serão apresentados no Grid, então você pode usar:

Código: Selecionar todos

consulta.Grid_1.SetArray := aCampos
Neste caso, em aCampos você tem que incluir ( AADD(aCampos,{CLI->CODIGO,CLI->NOME}) ) todos os elementos/registros que serão apresentados no Grid, que é diferente do AddItem que inclui um a um os registros.

Abraços,

Acrescentar itens na Grid com Vetor para os campos

Enviado: 25 Out 2018 07:39
por rubens
Bom dia..
bjbernal já estava sendo feito em loop, resultado de um wildseek.

Toledo... funcionou belezinha... perfeito.. obrigado..

:))
Rubens

Acrescentar itens na Grid com Vetor para os campos

Enviado: 25 Out 2018 08:12
por rubens
Ops..
me enganei... fiz alteração no lugar errado...
Quando alterei o local correto me apresentou erro de ITEM lenght mismatch.
Daí dei mais um revisadinha e consegui assim, colocando os campos entre aspas, gerando uma variável texto ao invés de um vetor

Código: Selecionar todos

Private aCampos	:= "{CLI->CODIGO,CLI->NOME,IIF(CLI->JURIDICA='J',CLI->CGC,CLI->CPF),TRAN(CLI->SALDO,PVALOR),CLI->SITUACAO}"   
e na hora de adicionar no grid usando macro.. aí funcionou beleza..

Código: Selecionar todos

Consulta.Grid_1.AddItem( &aCampos )
detalhe: aCampos está sendo criado em um função que chama a outra função com o AddItem.
Mas funcionou, bola para frente porque estou muito atrasado aqui devido ao esforço da implantação da Nfe 4.00.

Rubens