POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER
Enviado: 06 Mar 2024 08:58
Bom dia Prezados ..
Gostaria de relatar um problema no qual estou enfrentando depois que atualizei meu sistema de xHarbour para o Harbour 3.2...
Quando entro na tela de pedidos q é um TBROWSER e pressiono a tecla "A" para Alterar .. meu sistema gera um DBF temporario e abre um novo TBROWSER com os itens do pedido .. se simplesmente eu pressionar <ESC> o ponteiro fica corretamente no resgistro em q estava antes de entrar alterando o pedido ... agora se eu se movimentar para baixo dentro dos itens alterados .. e pressionar <ESC> para retornar a tela anterior de pedidos ele move de lugar o ponteiro ... na versão xHarbour não ocorria isso ..
Resumindo .. a mesma quantidade de movimentos que faço pra baixo dentro dos itens é a quantidade de movimentos que o cursor sobre dentro da tela de pedidos .. alguém ja passou por isso ??
Abraço!
CODIGO TELA DE PEDIDOS ...
CODIGO ALTERAÇÃO PEDIDO
Gostaria de relatar um problema no qual estou enfrentando depois que atualizei meu sistema de xHarbour para o Harbour 3.2...
Quando entro na tela de pedidos q é um TBROWSER e pressiono a tecla "A" para Alterar .. meu sistema gera um DBF temporario e abre um novo TBROWSER com os itens do pedido .. se simplesmente eu pressionar <ESC> o ponteiro fica corretamente no resgistro em q estava antes de entrar alterando o pedido ... agora se eu se movimentar para baixo dentro dos itens alterados .. e pressionar <ESC> para retornar a tela anterior de pedidos ele move de lugar o ponteiro ... na versão xHarbour não ocorria isso ..
Resumindo .. a mesma quantidade de movimentos que faço pra baixo dentro dos itens é a quantidade de movimentos que o cursor sobre dentro da tela de pedidos .. alguém ja passou por isso ??
Abraço!
CODIGO TELA DE PEDIDOS ...
Código: Selecionar todos
cAlias := "PED"
nOrdem := "PEDCX_02"
db_PED := WIN(03,01,22,78, "* * PUNTO DE VENTA * *", WT_AZUL2BRANCO, WD_AZUL2BRANCO)
DB_PEDIDO_VENDA( aCab, aCamp, aPict, cAlias, nOrdem, Regra)
return nil
*---------------------------------------------------------------------*
function DB_PEDIDO_VENDA( aCab, aCamp, aPict, cAlias, nOrdem, Regra )
*---------------------------------------------------------------------*
local oTAB, oCol, nKey, nRow, nCol, cTela, cArea
local OLDREC, OBROWSE, OCOLUNA, PESQUISA
select( cAlias )
set order to nOrdem
__KEYBOARD(CHR(30)) //(K_CTRL_PGDN)
setcursor(0)
cArea := savescreen( 00, 00, 24, 79 )
X:=aCamp[2]
oTab := TBrowseDB( 05, 02, 21, 77 ) // GERA UM TBROWSE
oTab:colsep := CHR(179)
oTab:headsep := CHR(194)+CHR(196)
oTab:footsep := CHR(193)+CHR(196)
// 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19
oTab:ColorSpec := "N/W*,W+/B+,R+/W*,W+/N,GR+/N,W+/B+,B+/W*,R+/W*,R+/B,G/W*,GR+/R+,W+/G,R+/N+,N*/GR,W+/R+,GR+/B+,GR+/G,GR+/N,GR+/R"
// LETRA + COR DA LINHA
for i = 1 TO len( aCamp )
if valtype(aCamp[I]) == "B"
oCol:=TBcolumnNew( aCab[I], ( aCamp[I] ) )
oCol:Picture:=aPict[I]
else
oCol:=TBcolumnNew( aCab[I], FIELDWBLOCK( aCamp[I], SELECT()))
oCol:Picture:=aPict[I]
endif
oCol:ColorBlock:={|X| IIF(cc_marcfat = 'C',{15,5},IIF(cc_Mfact = 'û',{13,5},IIF(cc_marcfat = ' ' .and. cc_tipoven # 'D' .and. cc_tipoven # 'T' .and. cc_tipoven # 'O';
.and. cc_tipoven # 'C' ,{1,5}, IIF(cc_tipoven = 'D' .or. cc_tipoven = 'T',{3,5}, IIF(cc_tipoven = 'O' .or. cc_tipoven = 'C',{10,5},{7,2})))))}
oTab:addColumn( oCol )
next
nCol_Reg := (oTab:nRight-oTab:nLeft+2) / LEN(aCamp) // Para iluminar o TBrowser // [V] VAREJO
// [A] ATACADO
oTab:Freeze := 2 // Definindo Coluna fixa // [O] PRESUPUESTO VAREJO
oTab:ColPos := 1 // [C] PRESUPUESTO VAREJO
// [D] DEVLUCION VAREJO
do while .T. // [T] DEVLUCION ATACADO
// [R] REQUISICION
DO WHILE !oTab:Stabilize() // [S] SERVICIOS
ENDDO
// LETRA BR + TARJA PT // LETRA AM + FUNDO PT
IF cc_marcfat = ' ' // EM ABERTOS // W+/N // GR+/N
oTab:colorRect({oTab:RowPos,1,oTab:RowPos,oTab:ColCount},{4,18}) // linha colorida (BR/PT) , cursor (AM/PT)
elseif cc_marcfat = 'û'
oTab:colorRect({oTab:RowPos,1,oTab:RowPos,oTab:ColCount},{6,16})
elseif cc_marcfat = 'C'
oTab:colorRect({oTab:RowPos,1,oTab:RowPos,oTab:ColCount},{11,19})
endif
IF cc_tipoven = 'O' .or. cc_tipoven = 'C' // OR€AMENTOS
oTab:colorRect({oTab:RowPos,1,oTab:RowPos,oTab:ColCount},{12,17})
ENDIF
IF cc_tipoven = 'D' .or. cc_tipoven = 'T' // DEVOLUیES
oTab:colorRect({oTab:RowPos,1,oTab:RowPos,oTab:ColCount},{15,19})
ENDIF
IF cc_Mfact = 'û'
oTab:colorRect({oTab:RowPos,1,oTab:RowPos,oTab:ColCount},{13,5})
ENDIF
oTab:hilite()
nKey := Inkey(0)
setpos( nRow, nCol )
if PED_ret = .T.
keyboard chr(73)
endif
do case
case lastkey() = 27 // K_ESC
rstenv(PRINC)
rstenv(DB_PED)
set key 274 to
select(n_Arqant)
DESAT_TAB()
MOSTRA_USU()
exit
......
otherwise
endcase
setcursor(0)
oTab:Refreshcurrent() // Refresca a Tela ou Atualiza os Dados
if nKey == K_F1
elseif nKey == K_F2
elseif nKey == K_F3
elseif nKey == K_F4
elseif nKey == K_F5
elseif nKey == K_F6
elseif nKey == K_F7
elseif nKey == K_UP ; oTab:UP()
elseif nKey == K_DOWN ; oTab:DOWN()
elseif nKey == K_LEFT ; oTab:LEFT()
elseif nKey == K_CTRL_LEFT ; oTab:PANLEFT()
elseif nKey == K_RIGHT ; oTab:RIGHT()
elseif nKey == K_CTRL_RIGHT ; oTab:PANRIGHT()
elseif nKey == K_PGUP ; oTab:PAGEUP()
elseif nKey == K_CTRL_PGUP ; oTab:GOTOP()
elseif nKey == K_PGDN ; oTab:PAGEDOWN()
elseif nKey == K_CTRL_PGDN ; oTab:GOBOTTOM()
elseif nKey == K_HOME ; oTab:HOME()
elseif nKey == K_CTRL_HOME ; oTab:PANHOME()
elseif nKey == K_END ; oTab:END()
elseif nKey == K_CTRL_END ; oTab:PANEND()
endif
enddo
return
Código: Selecionar todos
cAlias := "TMP" // ABRE ARQUIVO TEMPORARIO
nOrdem := " "
ATU_VALOR()
DB_ALTERA_PEDVEN( aCab, aCamp, aPict, cAlias, nOrdem, Regra)
return nil
*----------------------------------------------------------------------*
function DB_ALTERA_PEDVEN( aCab, aCamp, aPict, cAlias, nOrdem, Regra )
*----------------------------------------------------------------------*
local oTAB, oCol, nKey, nRow, nCol, cTela, cArea
local OLDREC, OBROWSE, OCOLUNA, PESQUISA
LOCAL GETLIST := {}, sav_ord, Tela_PedVen
select( cAlias )
set order to nOrdem
go top
setcursor(0)
cArea := savescreen( 00, 00, 24, 79 )
X:=aCamp[2]
oTab := TBrowseDB( 09, 01, 20, 78 ) // GERA UM TBROWSE
if (PAR->cc_vendlin) = "N"
oTab:colsep := " "
oTab:headsep := CHR(196)
oTab:footsep := CHR(196)
else
oTab:colsep := CHR(179)
oTab:headsep := CHR(194)+CHR(196)
oTab:footsep := CHR(193)+CHR(196)
endif
oTab:ColorSpec := "N/W,W+/B+,R+/W,R+/N+,GR+/N"
for i = 1 TO len( aCamp )
if valtype(aCamp[I]) == "B"
oCol:=TBcolumnNew( aCab[I], ( aCamp[I] ) )
oCol:Picture:=aPict[I]
else
oCol:=TBcolumnNew( aCab[I], FIELDWBLOCK( aCamp[I], SELECT()))
oCol:Picture:=aPict[I]
endif
If Regra # Nil
oCol:ColorBlock:={|X| If(&(Regra),{3,4},{1,2})}
EndIf
oTab:addColumn( oCol )
next
nCol_Reg := (oTab:nRight-oTab:nLeft+2) / LEN(aCamp) // Para iluminar o TBrowser
oTab:Freeze := 2 // Definindo Coluna fixa
oTab:ColPos := 1
do while .T.
oTab:colorRect({oTab:RowPos,1,oTab:RowPos,oTab:ColCount},{})
DO WHILE !oTab:Stabilize()
ENDDO
IF ITEM_SEM_ESTOQUE_PED() == 'N' .and. cc_marcfat = ' ' .and. CC_UND # 'SER'
oTab:colorRect({oTab:RowPos,1,oTab:RowPos,oTab:ColCount},{4,5})
else
oTab:colorRect({oTab:RowPos,1,oTab:RowPos,oTab:ColCount},{2,5})
endif
oTab:hilite()
setpos( nRow, nCol )
nKey := inkey()
if oTAB:stable
if oTAB:hittop
oTAB:HITTOP := .F. // INICIO DO ARQUIVO
elseif oTAB:hitbottom
oTAB:HITBOTTOM := .F. // FIM DO ARQUIVO
endif
setpos( nRow, nCol )
nKey := Inkey(0)
endif
do case
case lastkey()=73 .or. lastkey()=105 // INCLUIR ITEM PEDIDO DEFINITIVO
ordsetfocus("ptmcx_15") // ordem decrescente de data + hora // ultimo item fica no top
oTab:ColPos := 1
oTab:Refreshall()
sav_ord := indexord() && SALVA ORDEM
Tela_PedVen := SavEnv(10,01,20,78)
if PED->cc_marcfat = "û"
MSGBOX1("Para Incluir, cancele o faturamento do pedido antes!")
select TMP
keyboard chr(27)
endif
if PED->cc_marcfat = "C"
MSGBOX1("Este pedido est cancelado, imposs¡vel alterar!")
select TMP
keyboard chr(27)
endif
n_itempar := LOJ->cn_qtditem
select TMP
sav_ord := indexord() && SALVA ORDEM
...................
otherwise
endcase
setcursor(0)
oTab:Refreshcurrent() // Refresca a Tela ou Atualiza os Dados
if nKey == K_F1
elseif nKey == K_F2
elseif nKey == K_F3
elseif nKey == K_F4
elseif nKey == K_F5
elseif nKey == K_F6
elseif nKey == K_F7
elseif nKey == K_UP ; oTab:UP()
elseif nKey == K_DOWN ; oTab:DOWN()
elseif nKey == K_LEFT ; oTab:LEFT()
elseif nKey == K_CTRL_LEFT ; oTab:PANLEFT()
elseif nKey == K_RIGHT ; oTab:RIGHT()
elseif nKey == K_CTRL_RIGHT ; oTab:PANRIGHT()
elseif nKey == K_PGUP ; oTab:PAGEUP()
elseif nKey == K_CTRL_PGUP ; oTab:GOTOP()
elseif nKey == K_PGDN ; oTab:PAGEDOWN()
elseif nKey == K_CTRL_PGDN ; oTab:GOBOTTOM()
elseif nKey == K_HOME ; oTab:HOME()
elseif nKey == K_CTRL_HOME ; oTab:PANHOME()
elseif nKey == K_END ; oTab:END()
elseif nKey == K_CTRL_END ; oTab:PANEND()
endif
enddo
return