Tbrowse array c/multilinhas

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Tbrowse array c/multilinhas

Mensagem por MARCELOG »

Olá companheiros, estou trabalhando no projeto abaixo, relativo a um tbrowse com array, para mostrar na segunda coluna diversas linhas.
Trata-se de uma tentativa de simulação do programa tbr33.prg do source do Clipper 5.2, só que com uma array.
Todavia, não estou conseguindo exibir corretamente os dados.
Infelizmente, os elementos (arquivos) da matriz aStru são alternadamente exibidos, ou seja, 1,3,5,7, etc.
Sei que o problema está na deifinção de nLine (ou não ????), mas não consigo solucionar o mesmo.
Alguém se habilita a ajudar.

Obrigado.

MarceloG

Compile, linkedit, execute e veja:

Código: Selecionar todos

#include "inkey.ch"
FUNCTION Main()

LOCAL aStru, oTbr, i, oTbc, nLine, GetList, uTbr

cls

aStru := directory()

oTbr:=TBROWSENEW(01,01,MAXROW()-2,MAXCOL()-3)
oTbr:COLORSPEC:="N/W*,N/GR*"  
oTbr:COLSEP  := '  '
oTbr:HEADSEP := 'ÄÄ'

nLine := 1
i     := 1

oTbc:=TBCOLUMNNEW("Teste1",{||IIF(nLine == 1, aStru[i,1], "")})
oTbc:PICTURE:="@!"
oTbc:WIDTH  :=20
oTbc:CARGO  :="Teste1"
oTbr:ADDCOLUMN(oTbc)

oTbc:=TBCOLUMNNEW("Teste2",{||IIF(nLine == 1, aStru[i,2], aStru[i,3])})
oTbc:PICTURE:="@!"
oTbc:WIDTH  :=10
oTbc:CARGO  :="Teste2"
oTbr:ADDCOLUMN(oTbc)

oTbr:GOTOPBLOCK   :={||nLine := 1, i := 1}
oTbr:GOBOTTOMBLOCK:={||nLine := 2, i := LEN(aStru)}
oTbr:SKIPBLOCK    :={|n,nSavei|;
                      nSavei := i,;
                      i := IIF(n > 0,MIN(LEN(aStru),i+n),MAX(1,i+n)),;
                      IIF( (i % 2) == 0, nLine := 2, nLine := 1),;
                      i - nSavei}

GetList := {}

@ 01,01,MAXROW()-2,MAXCOL()-3 GET uTbr TBROWSE oTbr;
  VALID {||Iif(LastKey() == K_ENTER,READKILL(.T.),.T.)}

READ

RETURN
//---------------------------------
Responder