Página 1 de 1

Tbrowse array c/multilinhas

Enviado: 10 Mai 2006 16:37
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
//---------------------------------