TBCOLUMNNEW - COMO ADICIONAR COM ARRAY ?
Enviado: 06 Jun 2006 11:33
Não tenho muito conhecimento do Tbrowse. Estou tentanto uma função para que o tbrowse mostre uma tabela na tela. As tabelas serão passadas como parâmetro. Exemplo:
tabela1 :={}
-----------------
AADD(tabela1,{ "Nome", "@!", 15} ) onde:
o nome, é o título propriamente dito,
@! a pict que será usada e
15 o tamanho (width) para get
AADD(tabela1,{ "Data ", "@D", 10} )
AADD(tabela1,{ "Depto ", "@!", 15 } )
tabela2 := {}
-----------------
AADD(tabela2, { "ERICA" , CTOD("05/05/2006"), "INFORMÁTICA" } )
AADD(tabela2, { "ANGELO" ,CTOD("03/05/2006"), "INFORMÁTICA" } )
AADD(tabela2, { "MARCELA", CTOD("04/04/2006"), "INFORMÁTICA" } )
----------------------------------------------
FUNCAO(tabela1,tabela2,03,03,15,65)
----------------------------------------------
PRIVATE n:= 1 ,; // contador
ntot:=len(pa_tabget) ,; // tamanho da tabela de get linhas
pr_flag := 1
brw := TBrowseNew(pa_lin1,pa_col1,pa_lin2,pa_col2)
brw:colorspec := SETCOLOR()
brw:headsep:=chr(205)+chr(209)+chr(205)
brw:colsep:=" "+chr(179)+" "
brw:gotopblock({|| n:= 1})
brw:gobottomblock({|| n:=ntot})
brw:skipblock({|item| ( n:= n + item,;
iif ( n < 1, item:= item - n + (n:= 1),;
iif(n > ntot, item:= item - (n - (n:=ntot)), Nil)), item)})
l_cont := 1 // l_cont No da coluna
DO WHILE .t.
IF l_cont > LEN(pa_tabget[1])
EXIT
ENDIF
brw:addcolumn(tbcolumnnew(pa_tabtit[l_cont,1] , ;
{|| TRANS(pa_tabget[n,?????????], pa_tabtit[l_cont,2])} ))
==> O QUE EU USO NO LUGAR DE
?????
brw:getcolumn(l_cont):width := pa_tabtit[l_cont,3]
brw:getcolumn(l_cont):cargo := pa_tabtit[l_cont,2]
l_cont := l_cont + 1
ENDDO
pr_flag := 0
l_cont := 1
n := 1
l_retorno := .t.
l_escolha = 0
DO WHILE l_retorno
IF l_escolha > 0
EXIT
ENDIF
SETCOLOR("W+/B")
SET CURSO OFF
e := 1
DO WHILE !brw:stabilize() .AND. NEXTKEY()=0
ENDDO
READINSERT(.f.)
x_ = COL() ; y_ = ROW()
l_tecla := INKEY(0)
carac_ = UPPER(CHR(l_tecla))
SET CURSO ON
brw:dehilite()
DO CASE
CASE l_tecla = K_ENTER
l_escolha := brw:rowpos
CASE l_tecla = K_ESC
l_retorno := .f.
CASE l_tecla = K_UP
brw:up()
CASE l_tecla = K_DOWN
brw:down()
CASE l_tecla = K_RIGHT
brw:right()
CASE l_tecla = K_LEFT
brw:left()
CASE l_tecla = K_HOME
brw:home()
CASE l_tecla = K_END
brw:end()
CASE l_tecla = K_PGUP
brw:pageup()
CASE l_tecla = K_PGDN
brw:pagedown()
CASE l_tecla = K_CTRL_PGDN
brw:gobottom()
CASE l_tecla = K_CTRL_PGUP
brw:gotop()
CASE l_tecla = K_CTRL_END
brw:panend()
CASE l_tecla = K_CTRL_HOME
brw:panhome()
CASE l_tecla = K_CTRL_LEFT
brw:panleft()
CASE l_tecla = K_CTRL_RIGHT
brw:panright()
ENDCASE
ENDDO
SET CURSOR ON
RETURN
tabela1 :={}
-----------------
AADD(tabela1,{ "Nome", "@!", 15} ) onde:
o nome, é o título propriamente dito,
@! a pict que será usada e
15 o tamanho (width) para get
AADD(tabela1,{ "Data ", "@D", 10} )
AADD(tabela1,{ "Depto ", "@!", 15 } )
tabela2 := {}
-----------------
AADD(tabela2, { "ERICA" , CTOD("05/05/2006"), "INFORMÁTICA" } )
AADD(tabela2, { "ANGELO" ,CTOD("03/05/2006"), "INFORMÁTICA" } )
AADD(tabela2, { "MARCELA", CTOD("04/04/2006"), "INFORMÁTICA" } )
----------------------------------------------
FUNCAO(tabela1,tabela2,03,03,15,65)
----------------------------------------------
PRIVATE n:= 1 ,; // contador
ntot:=len(pa_tabget) ,; // tamanho da tabela de get linhas
pr_flag := 1
brw := TBrowseNew(pa_lin1,pa_col1,pa_lin2,pa_col2)
brw:colorspec := SETCOLOR()
brw:headsep:=chr(205)+chr(209)+chr(205)
brw:colsep:=" "+chr(179)+" "
brw:gotopblock({|| n:= 1})
brw:gobottomblock({|| n:=ntot})
brw:skipblock({|item| ( n:= n + item,;
iif ( n < 1, item:= item - n + (n:= 1),;
iif(n > ntot, item:= item - (n - (n:=ntot)), Nil)), item)})
l_cont := 1 // l_cont No da coluna
DO WHILE .t.
IF l_cont > LEN(pa_tabget[1])
EXIT
ENDIF
brw:addcolumn(tbcolumnnew(pa_tabtit[l_cont,1] , ;
{|| TRANS(pa_tabget[n,?????????], pa_tabtit[l_cont,2])} ))
==> O QUE EU USO NO LUGAR DE
brw:getcolumn(l_cont):width := pa_tabtit[l_cont,3]
brw:getcolumn(l_cont):cargo := pa_tabtit[l_cont,2]
l_cont := l_cont + 1
ENDDO
pr_flag := 0
l_cont := 1
n := 1
l_retorno := .t.
l_escolha = 0
DO WHILE l_retorno
IF l_escolha > 0
EXIT
ENDIF
SETCOLOR("W+/B")
SET CURSO OFF
e := 1
DO WHILE !brw:stabilize() .AND. NEXTKEY()=0
ENDDO
READINSERT(.f.)
x_ = COL() ; y_ = ROW()
l_tecla := INKEY(0)
carac_ = UPPER(CHR(l_tecla))
SET CURSO ON
brw:dehilite()
DO CASE
CASE l_tecla = K_ENTER
l_escolha := brw:rowpos
CASE l_tecla = K_ESC
l_retorno := .f.
CASE l_tecla = K_UP
brw:up()
CASE l_tecla = K_DOWN
brw:down()
CASE l_tecla = K_RIGHT
brw:right()
CASE l_tecla = K_LEFT
brw:left()
CASE l_tecla = K_HOME
brw:home()
CASE l_tecla = K_END
brw:end()
CASE l_tecla = K_PGUP
brw:pageup()
CASE l_tecla = K_PGDN
brw:pagedown()
CASE l_tecla = K_CTRL_PGDN
brw:gobottom()
CASE l_tecla = K_CTRL_PGUP
brw:gotop()
CASE l_tecla = K_CTRL_END
brw:panend()
CASE l_tecla = K_CTRL_HOME
brw:panhome()
CASE l_tecla = K_CTRL_LEFT
brw:panleft()
CASE l_tecla = K_CTRL_RIGHT
brw:panright()
ENDCASE
ENDDO
SET CURSOR ON
RETURN