|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
TCBROWSE dinâmico |
|
Versão: |
12 |
|
Plataforma: |
Microsoft |
Complemento: |
|
|
DB: |
SQL Server |
Complemento: |
|
|
|
|
|
Mensagem do
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
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 |
|
|
Mensagem do
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
|
|
|
Mensagem do
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. |
|
|
Mensagem do
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
|
|