PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
TCBROWSE dinâmico
Versão:
12
Plataforma:
Microsoft
Complemento:
DB:
SQL Server
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário EDUARDONET EDUARDONET em 27/06/2017, 17:04 h
Local: RS  Registro: 04/05/2017  Postagens: 13
Boa tarde pessoal !

já derreti quase todos meus neurônios e não consegui descobrir o que está errado nesse código. Se usar o trecho comentado, os Labels e Dados do Grid são montados corretamente, do contrário, se utilizar o código otimizado com o comando "For", os Labels das colunas são montados ok, mas os Dados das colunas ficam errados, ou seja, os Dados das últimas duas colunas são replicados para as demais. Por favor, conto com a ajuda de vocês. Obrigado.

oList := nil
oList := TCBrowse():New(020,001,652,240,,{"Descrição do Material / Fornecedor"},,oDlg,,,,,,,,,,,,.F.,,.T.,,.F.,,,)
/*
oList:AddColumn(TCColumn():New("Descrição do Material / Fornecedor",{|| aItens[oList:nAt,01]},"@!",,,"LEFT",200,.F.,.F.,,,,.F.,))
oList:AddColumn(TCColumn():New("Set-Qtd"     ,{|| aItens[oList:nAt,02]},"@EZ 99999.9" ,,,"RIGHT",027,.F.,.F.,,,,.F.,))
oList:AddColumn(TCColumn():New("Set-Preço"   ,{|| aItens[oList:nAt,03]},"@EZ 99999.99",,,"RIGHT",033,.F.,.F.,,,,.F.,))
oList:AddColumn(TCColumn():New("Out-Qtd"     ,{|| aItens[oList:nAt,04]},"@EZ 99999.9" ,,,"RIGHT",033,.F.,.F.,,,,.F.,))
oList:AddColumn(TCColumn():New("Out-Preço"   ,{|| aItens[oList:nAt,05]},"@EZ 99999.99",,,"RIGHT",033,.F.,.F.,,,,.F.,))
oList:AddColumn(TCColumn():New("Nov-Qtd"     ,{|| aItens[oList:nAt,06]},"@EZ 99999.9" ,,,"RIGHT",033,.F.,.F.,,,,.F.,))
oList:AddColumn(TCColumn():New("Nov-Preço"   ,{|| aItens[oList:nAt,07]},"@EZ 99999.99",,,"RIGHT",033,.F.,.F.,,,,.F.,))
oList:AddColumn(TCColumn():New("Dez-Qtd"     ,{|| aItens[oList:nAt,08]},"@EZ 99999.9" ,,,"RIGHT",033,.F.,.F.,,,,.F.,))
oList:AddColumn(TCColumn():New("Dez-Preço"   ,{|| aItens[oList:nAt,09]},"@EZ 99999.99",,,"RIGHT",033,.F.,.F.,,,,.F.,))
oList:AddColumn(TCColumn():New("Jan-Qtd"     ,{|| aItens[oList:nAt,10]},"@EZ 99999.9" ,,,"RIGHT",033,.F.,.F.,,,,.F.,))
oList:AddColumn(TCColumn():New("Jan-Preço"   ,{|| aItens[oList:nAt,11]},"@EZ 99999.99",,,"RIGHT",033,.F.,.F.,,,,.F.,))
oList:AddColumn(TCColumn():New("Fev-Qtd"     ,{|| aItens[oList:nAt,12]},"@EZ 99999.9" ,,,"RIGHT",033,.F.,.F.,,,,.F.,))
oList:AddColumn(TCColumn():New("Fev-Preço"   ,{|| aItens[oList:nAt,13]},"@EZ 99999.99",,,"RIGHT",033,.F.,.F.,,,,.F.,))
oList:AddColumn(TCColumn():New("Total   "    ,{|| aItens[oList:nAt,14]},"@EZ 99999.99",,,"RIGHT",025,.F.,.F.,,,,.F.,))
oList:AddColumn(TCColumn():New("Média(Preço)",{|| aItens[oList:nAt,15]},"@EZ 99999.99",,,"RIGHT",025,.F.,.F.,,,,.F.,))
*/
oList:AddColumn(TCColumn():New("Descrição do Material / Fornecedor",{|| aItens[oList:nAt,01]},"@!",,,"LEFT",200,.F.,.F.,,,,.F.,))

nCol := 2

For i := 1 to Len(aLabelMes)

     oList:AddColumn(TCColumn():New(aLabelMes[i,1]+"-Qtd"   ,{|| aItens[oList:nAt,nCol]} ,"@EZ 99999.9" ,,,"RIGHT",027,.F.,.F.,,,,.F.,))
     oList:AddColumn(TCColumn():New(aLabelMes[i,1]+"-Preço" ,{|| aItens[oList:nAt,nCol+1]},"@EZ 99999.99",,,"RIGHT",033,.F.,.F.,,,,.F.,))

    nCol := nCol + 2

Next

oList:AddColumn(TCColumn():New("Total   "    ,{|| aItens[oList:nAt,nCol]} ,"@EZ 99999.99",,,"RIGHT",025,.F.,.F.,,,,.F.,))
oList:AddColumn(TCColumn():New("Média(Preço)",{|| aItens[oList:nAt,nCol+1]},"@EZ 99999.99",,,"RIGHT",025,.F.,.F.,,,,.F.,))

Mensagem do Enviar e-mail Abrir o Perfil do usuário DON.JUNIOR DON.JUNIOR em 29/06/2017, 21:50 h
Local: RJ  Registro: 24/01/2016  Postagens: 152
Edu você tem:

{|| aItens[oList:nAt,02]}    - Sem FOR
{|| aItens[oList:nAt,nCol]} - Com FOR

A diferença é o nCol que está incrementando de 2 em 2...

O correto não seria nCol := nCol + 1 ou nCol++ ?

Att.
Don Junior

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário EMERSON.EN EMERSON.EN em 30/06/2017, 01:28 h
Local: SP  Registro: 20/08/2010  Postagens: 670
o problema é que não pode ser usada uma variável para identificar a coluna. o valor precisa ser literal. do jeito que você fez, o sistema usará o valor da variável, e como ela é alterada a cada iteração do for, e exibição ficará comprometida.

tente algo assim:

nCol := 2

For i := 1 to Len(aLabelMes)
     cCol := alltrim( str( nCol ) ) // aqui será tratado o literal
     cCol2 := alltrim( str( nCol+1 ) ) // aqui será tratado o literal

     oList:AddColumn(TCColumn():New(aLabelMes[i,1]+"-Qtd"   ,{|| aItens[oList:nAt, &( cCol ) ]} ,"@EZ 99999.9" ,,,"RIGHT",027,.F.,.F.,,,,.F.,))
     oList:AddColumn(TCColumn():New(aLabelMes[i,1]+"-Preço" ,{|| aItens[oList:nAt, &( cCol2 ) ]},"@EZ 99999.99",,,"RIGHT",033,.F.,.F.,,,,.F.,))

    nCol += 2
Next

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário ROMASP ROMASP em 30/06/2017, 08:33 h
Local: SP  Registro: 12/01/2007  Postagens: 81
Bom dia Eduardo.

Eu só consegui fazer funcionar TcBrowse dinâmico chamando uma função para montar as colunas.

Eu defino as informações em uma matriz e chamo a função.

Por exemplo:

_oBrowser := TcBrowse():New( 000, 000, 000, 225,,,, _oDlgAbrir,,,,,,,,,,,, .F.,, .T.,, .F.,,,, )

For nLin := 1 To Len( _aStruct )
     fAddColunas( nLin )
Next nLin

Static Function fAddColunas( pLin )
     _oBrowser:AddColumn( TcColumn():New( _aStruct[pLin][1], { || _aDados[_oBrowser:nAt][pLin+1] }, _aStruct[pLin][2],,, _aStruct[pLin][3], _aStruct[pLin][4], .F., .F.,,,, .F., ) )
Return( NIL )

Espero ter ajudado.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário EDUARDONET EDUARDONET em 05/07/2017, 21:46 h
Local: RS  Registro: 04/05/2017  Postagens: 13
Boa noite pessoal !

Fico muitíssimo grato pelas respostas. Assim que testar as soluções retornarei, com certeza.

Obrigado novamente !

Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal