Na minha função de tbrowse com array utilizo o seguinte procedimento
aMatriz:={{a,b,c,d}{a,b,c,d}{a,b,c,d}{a,b,c,d}}
aTitu :={T1,T2,T3,T4)
aLarg :={10,10,10,10}
TbrArray(00,00,22,79,aMatriz,aTitu,aLarg)
FUNCTION TbrArray(Li,Ci,Lf,Cf,aMatriz,aTitu,aLarg)
LOCAL i:=1,a,oTbc
oTbr:=TBrowseNew(Li,Ci,Lf,Cf)
oTbr:HeadSep :="ÍÍÍ"
oTbr:ColSep :=" ³ "
oTbr:FootSep :="ÍÍÍ"
For a:=1 To Len(aTitu)
oTbc:= tbcolumnnew(aTitu[a],{|x|If(x == NIL,aMatriz[i,a],aMatriz[i,a]:=x)})
oTbc:Width:=aLarg[a]
oTbr:AddColumn(oTbc)
Next
oTbr:gotopblock :={||i:=1}
oTbr:gobottomblock :={||i:=LEN(aMatriz)}
oTbr:skipblock :={|n,nSavei|;
nSavei:=i,;
i:=If(n > 0,;
Min(Len(aMatriz),i + n),;
Max(1,i + n)),;
i - nSavei}
RETURN (oTbr)
Entretanto, o Loop FOR/NEXT não funciona.
Do jeito que está, ele dá erro BASE/1132 ao estabilizar.
Se criar uma variável e igualá-la a "a", eu vejo o Tbrowse com a array, mas todos os dados referem-se, no caso, a aMatriz[1,4], ou seja, todos os dados são iguais a letra "d".
For a:=1 To Len(aTitu) //com DBF e FieldWBlock() funciona
y:=a
oTbc:= tbcolumnnew(aTitu[a],{|x|If(x == NIL,aMatriz[i,y],aMatriz[i,y]:=x)})
oTbc:Width:=aLarg[y]
oTbr:AddColumn(oTbc)
Next
Se eu fizer conforme abaixo, no braço, criando uma rotina separada para cada array, funciona beleza.
Alguém sabe porquê?
Atenciosamente.
MGS
/*
oTbc:= tbcolumnnew("T1",{|x|If(x == NIL,aMatriz[i,1],aMatriz[i,1]:=x)})
oTbc:Width:=15
oTbr:AddColumn(oTbc)
oTbc:= tbcolumnnew("T2",{|x|If(x == NIL,aMatriz[i,2],aMatriz[i,2]:=x)})
oTbc:Width:=15
oTbr:AddColumn(oTbc)
oTbc:= tbcolumnnew("T3",{|x|If(x == NIL,aMatriz[i,3],aMatriz[i,3]:=x)})
oTbc:Width:=15
oTbr:AddColumn(oTbc)
oTbc:= tbcolumnnew("T4",{|x|If(x == NIL,aMatriz[i,4],aMatriz[i,4]:=x)})
oTbc:Width:=15
oTbc:ColorBlock:={|x|If(!x,{6,5},Nil)}
oTbr:AddColumn(oTbc)
*/
Tbrowse c/array automático
Moderador: Moderadores
