TBCOLUMNNEW - COMO ADICIONAR COM ARRAY ?

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Eliane
Usuário Nível 2
Usuário Nível 2
Mensagens: 82
Registrado em: 22 Mai 2006 10:17
Localização: Londrina-PR

TBCOLUMNNEW - COMO ADICIONAR COM ARRAY ?

Mensagem por Eliane »

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
Stanis Luksys
Colaborador
Colaborador
Mensagens: 1329
Registrado em: 18 Jun 2005 03:04
Localização: São Paulo
Contato:

Mensagem por Stanis Luksys »

Olá,

Não consegui entender perfeitamente o q vc quer com sua função, mas por via das duvidas da uma olhada no exemplo Browse que tem na pasta Samples do Clipper....

Pode ser que ajude em algo.
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
Responder