Urgente: Tbrowse e _GET_
Enviado: 04 Abr 2007 12:12
Estou montando uma tabela com o Tbrowse, e cada coluna dá um get em um elemento da matriz. Tipo:
Código Valor RTG data ...
O Tbrowse está Ok. Não consigo no entanto posicionar a coluna corretamente para dar get no valor, rtg, etc, continha sempre na primeira coluna. Já pesquisei no fórum e no google, tentei um monte coisas, mas não deu certo.
Antes de dar get em cada coluna tento o seguinte:
browse := FTBROWSE() // cria objeto de rolagem
// pu_matget1 e demais tem que estar criadas com 1 posi‡Æo senÆo d erro em ind
// quando faz a primeira estabiliza‡Æo
l_flag := .f.
DO WHILE LASTKEY() <> K_ESC
l_flag := FgetLIN(browse)
l_tecla := FKEYS_TBROWSE(browse)
IF l_tecla = K_END
EXIT
ENDIF
ENDDO
return
******************************************************************************
// 1 -------------------- define objeto TBROWSE
******************************************************************************
**********************
FUNCTION FTBROWSE()
**********************
PUBLIC ind := 1
browse := TBROWSENEW(7,00,20,79)
***************************************************
// skipblock
**************************************************
browse:skipblock := { |aSaltar| l_Saltados:= IF ( ABS(aSaltar) >= ;
IF (aSaltar >= 0, LEN(pu_matget1)-ind,ind-1), ;
IF (aSaltar >= 0, LEN(pu_matget1)-ind,1-ind), aSaltar), ind+=l_Saltados, l_Saltados }
browse:gobottomblock := { || ind := LEN(pu_matget1) }
browse:gotopblock := { || ind := 1 }
browse:headsep := chr(176)
browse:colsep := " "+chr(176)
browse:nbottom := 19
browse:ntop := 7
browse:nleft := 1
browse:nright := 75
// define as colunas
coluna:= TBCOLUMNNEW(" ", { || TRANS(pu_matget1[ind],"XXXXXXXXXX") } )
coluna:heading := "No C¢digo "
coluna:colpos:= 2
browse:addcolumn(coluna)
coluna:= TBCOLUMNNEW("Valor ", { || pu_matget4[ind] } )
coluna:width := 10
coluna:cargo := { || "@z 9999999.99" }
coluna:colpos:= 60
browse:addcolumn(coluna)
coluna:= TBCOLUMNNEW("RTG", { || pu_matget5[ind] } )
coluna:width := 3
coluna:colpos := 70
browse:addcolumn(coluna)
DO WHILE !browse:stabilize() .AND. NEXTKEY()=0
ENDDO
RETURN(browse)
**************************************
FUNCTION FgetLIN(browse)
**************************************
Local l_get := .f.
DO WHILE LASTKEY() <> K_ESC
FgetCOD(browse,ind)
// get no valor
FgetVL(browse,ind)
FgetRTG(browse,ind)
exit
ENDDO
RETURN(.T.)
******************************
FUNCTION FgetCOD(browse,ind)
******************************
LOCAL coluna_get
PRIVATE pr_getlist2 := {} ,;
lin ,;
col
************************************************
* GET na tabela de CODIGO do servico - matget1
************************************************
IF ind > LEN(pu_matget1)
// precisa incluir ¡tem na tabela senÆo d erro - Insere nova posi‡Æo
AADD(pu_matget1,SPACE(10) )
ENDIF
DO WHILE !browse:stabilize() .AND. NEXTKEY()=0
ENDDO
coluna_get := browse:getcolumn(1)
newOBJGET(pr_getlist2,"pu_matget1[" + STRZERO(ind,2) + "]" , "XXXXXXXXXX")
Newread(pr_getlist2)
browse:configure()
browse:stable := .f.
browse:refreshcurrent()
RETURN(pu_matget1[ind])
******************************
FUNCTION FgetVl(browse,ind)
******************************
LOCAL oBget
PRIVATE pr_getlist2 := {} ,;
lin ,;
col
DO WHILE !browse:stabilize() .AND. NEXTKEY()=0
ENDDO
column := browse:getcolumn(2)
lin := row()
newOBJGET(pr_getlist2, 'pu_matget4[' + STRZERO(ind,2) + ']' , "99999999999.99")
newread(pr_getlist2)
RETURN(pu_matget4[ind])
*************************************************************
FUNCTION newOBJGET(pa_list_get,pa_var_get, pa_pict_get, pa_val_when,pa_val_get)
*************************************************************
pa_val_when := IF (pa_val_when = NIL , '{ || .t. }', '{ || '+pa_val_when+' }')
pa_val_get := IF (pa_val_get = NIL , '{ || .t. }', '{ || '+pa_val_get +' }')
oBget := _get_(&pa_var_get,pa_var_get,pa_pict_get,&pa_val_get,&pa_val_when)
lin := oBget:row()
//col: = Obget:col()
SetPos(lin,col)
*** adiciona o campo/variavel em getlist para dar get
AADD(pa_list_get, oBget )
RETURN(pa_var_get)
FUNCTION NEWREAD(pr_getlist2,oBget)
READMODAL(PR_GETLIST2)
RETURN(pr_getlist2)
[/code]
Código Valor RTG data ...
O Tbrowse está Ok. Não consigo no entanto posicionar a coluna corretamente para dar get no valor, rtg, etc, continha sempre na primeira coluna. Já pesquisei no fórum e no google, tentei um monte coisas, mas não deu certo.
Antes de dar get em cada coluna tento o seguinte:
browse := FTBROWSE() // cria objeto de rolagem
// pu_matget1 e demais tem que estar criadas com 1 posi‡Æo senÆo d erro em ind
// quando faz a primeira estabiliza‡Æo
l_flag := .f.
DO WHILE LASTKEY() <> K_ESC
l_flag := FgetLIN(browse)
l_tecla := FKEYS_TBROWSE(browse)
IF l_tecla = K_END
EXIT
ENDIF
ENDDO
return
******************************************************************************
// 1 -------------------- define objeto TBROWSE
******************************************************************************
**********************
FUNCTION FTBROWSE()
**********************
PUBLIC ind := 1
browse := TBROWSENEW(7,00,20,79)
***************************************************
// skipblock
**************************************************
browse:skipblock := { |aSaltar| l_Saltados:= IF ( ABS(aSaltar) >= ;
IF (aSaltar >= 0, LEN(pu_matget1)-ind,ind-1), ;
IF (aSaltar >= 0, LEN(pu_matget1)-ind,1-ind), aSaltar), ind+=l_Saltados, l_Saltados }
browse:gobottomblock := { || ind := LEN(pu_matget1) }
browse:gotopblock := { || ind := 1 }
browse:headsep := chr(176)
browse:colsep := " "+chr(176)
browse:nbottom := 19
browse:ntop := 7
browse:nleft := 1
browse:nright := 75
// define as colunas
coluna:= TBCOLUMNNEW(" ", { || TRANS(pu_matget1[ind],"XXXXXXXXXX") } )
coluna:heading := "No C¢digo "
coluna:colpos:= 2
browse:addcolumn(coluna)
coluna:= TBCOLUMNNEW("Valor ", { || pu_matget4[ind] } )
coluna:width := 10
coluna:cargo := { || "@z 9999999.99" }
coluna:colpos:= 60
browse:addcolumn(coluna)
coluna:= TBCOLUMNNEW("RTG", { || pu_matget5[ind] } )
coluna:width := 3
coluna:colpos := 70
browse:addcolumn(coluna)
DO WHILE !browse:stabilize() .AND. NEXTKEY()=0
ENDDO
RETURN(browse)
**************************************
FUNCTION FgetLIN(browse)
**************************************
Local l_get := .f.
DO WHILE LASTKEY() <> K_ESC
FgetCOD(browse,ind)
// get no valor
FgetVL(browse,ind)
FgetRTG(browse,ind)
exit
ENDDO
RETURN(.T.)
******************************
FUNCTION FgetCOD(browse,ind)
******************************
LOCAL coluna_get
PRIVATE pr_getlist2 := {} ,;
lin ,;
col
************************************************
* GET na tabela de CODIGO do servico - matget1
************************************************
IF ind > LEN(pu_matget1)
// precisa incluir ¡tem na tabela senÆo d erro - Insere nova posi‡Æo
AADD(pu_matget1,SPACE(10) )
ENDIF
DO WHILE !browse:stabilize() .AND. NEXTKEY()=0
ENDDO
coluna_get := browse:getcolumn(1)
newOBJGET(pr_getlist2,"pu_matget1[" + STRZERO(ind,2) + "]" , "XXXXXXXXXX")
Newread(pr_getlist2)
browse:configure()
browse:stable := .f.
browse:refreshcurrent()
RETURN(pu_matget1[ind])
******************************
FUNCTION FgetVl(browse,ind)
******************************
LOCAL oBget
PRIVATE pr_getlist2 := {} ,;
lin ,;
col
DO WHILE !browse:stabilize() .AND. NEXTKEY()=0
ENDDO
column := browse:getcolumn(2)
lin := row()
newOBJGET(pr_getlist2, 'pu_matget4[' + STRZERO(ind,2) + ']' , "99999999999.99")
newread(pr_getlist2)
RETURN(pu_matget4[ind])
*************************************************************
FUNCTION newOBJGET(pa_list_get,pa_var_get, pa_pict_get, pa_val_when,pa_val_get)
*************************************************************
pa_val_when := IF (pa_val_when = NIL , '{ || .t. }', '{ || '+pa_val_when+' }')
pa_val_get := IF (pa_val_get = NIL , '{ || .t. }', '{ || '+pa_val_get +' }')
oBget := _get_(&pa_var_get,pa_var_get,pa_pict_get,&pa_val_get,&pa_val_when)
lin := oBget:row()
//col: = Obget:col()
SetPos(lin,col)
*** adiciona o campo/variavel em getlist para dar get
AADD(pa_list_get, oBget )
RETURN(pa_var_get)
FUNCTION NEWREAD(pr_getlist2,oBget)
READMODAL(PR_GETLIST2)
RETURN(pr_getlist2)
[/code]