Página 3 de 4
POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER
Enviado: 14 Mar 2024 10:24
por deividdjs
então zé .. eu uso tbm o ordsetfocus em vários pontos do sistema.. mais como essa função vem desde lá do clipper e quando migrei para xharbour não apresentou problemas ficou assim ..
fiz a mudança e compilei em 3.2 não surgiu efeito nenhum .. e todas as sugestões dos amigos acima tbm não ..
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 )
ordsetfocus(nOrdem)
//set order to nOrdem
POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER
Enviado: 14 Mar 2024 10:28
por deividdjs
JoséQuintas escreveu:Pera aí.... devagar.
Vamos recomeçar:
Tem o primeiro fonte, é um browse.
Tem o segundo fonte, que contém uma rotina e um browse.
Qual a ligação entre eles ?
é uma rotina simples com vários cases para "i" incluir item no pedido "A" alterar "E" excluir e etc .. tudo bem simples ! e revisei tudo .. nada que possa mudar o ponteiro do cursor quando eu retorno pra função anterior .. será q não pode ser o RDDCDX ?? conflito nos indices?
POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER
Enviado: 14 Mar 2024 11:00
por JoséQuintas
E aquele select() ?
Se não muda área, vai bagunçar.
POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER
Enviado: 14 Mar 2024 11:24
por JoséQuintas
Esta é uma nova descoberta pra mim:
Dependendo da posição no fonte, é traduzido de um jeito.
Tanto no harbour quanto no xharbour
POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER
Enviado: 14 Mar 2024 11:43
por JoséQuintas
Depois dessa.... só o debug mesmo.
Pra que procurar, se ele pode procurar sozinho.
POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER
Enviado: 14 Mar 2024 12:10
por deividdjs
depois de décadas achei o problema ..
na rotina do <ESC> tinha essa função pra refrescar a tela ... e ela q era o problema !!
// oTab:Refreshall()
eliminei ela é solucionou o problema ... meu Jesuuuusssssss!!
o bizarro é q em xharbour funcionou a vida toda .. e ja em harbour dava esse problema .. vai entender !!
mesmo assim .. agradeço a todos q se dispuseram em ajudar ..
Abraço amigos ..
POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER
Enviado: 14 Mar 2024 13:36
por JoséQuintas
So aproveitando:
Justamente o bloco que comentei de modificar no fonte, pra ficar mais em evidência, foi o que deu problema no segundo fonte.
Por estar no meio do restante, passou tão desapercebido que nem sequer foi postado, e talvez tenha esquecido até de fazer testes nele.
É por isso que eu costumo chamar a atenção sobre os fontes.
Não parece, mas faz muita diferença.
Nesse caso, por exemplo, os testes acabariam ficando limitados ao bloco final.
E ele teria aparecido na postagem, acabou todo mundo procurando erro em fonte que não era causa do erro.
Aproveite e veja se tem outras situações parecidas.
De repente vai querer recuperar o tempo perdido, deixar assim, e não vai perceber que a alteração vai fazer ganhar tempo no futuro.
Nessas horas, só mesmo com alguém avisando, porque isso não consta em manual nenhum, e achamos que não é importante.
Pelo menos nesta situação está vendo que teria feito diferença, pode ser o melhor momento de avisar/convencer.
POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER
Enviado: 14 Mar 2024 14:30
por deividdjs
Tem razão... foi um problema tão tosco que nem postar eu postei ... mais fica o aprendizado! Hehhe
Vlw Zé..
POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER
Enviado: 14 Mar 2024 21:57
por rochinha
Amiguinhos,
deividdjs
Só pra deixar todos nós tranquilos, senão ninguém vai dormir hoje. Tira aquele select( alias ), desablita, etc. Ele é inóquo na sua aplicação como foi dito pelos forenses aqui.
@braços e com disse o Spock, Vida Longa ao Clipper.
POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER
Enviado: 14 Mar 2024 22:17
por JoséQuintas
rochinha escreveu:Só pra deixar todos nós tranquilos, senão ninguém vai dormir hoje. Tira aquele select( alias ), desablita, etc. Ele é inóquo na sua aplicação como foi dito pelos forenses aqui.
Não pode remover.
Se for o caso, apenas colocar espaço em branco depois de select.
Como mostrei no teste de gerar ppo, Select(x) no início da linha equivale ao comando SELECT (x)
já com atribuição, x := Select(x), aí ele vale por Select() mesmo.
E testei com xharbour e harbour, pra tirar dúvida, porque ele comentou que no xharbour funcionava.
É esquisito a mesma coisa ter dois funcionamentos diferentes, mas é assim.
POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER
Enviado: 15 Mar 2024 00:55
por rochinha
Amiguinhos,
Não pode remover.
Se for o caso, apenas colocar espaço em branco depois de select.
Como mostrei no teste de gerar ppo, Select(x) no início da linha equivale ao comando SELECT (x)
já com atribuição, x := Select(x), aí ele vale por Select() mesmo.
E testei com xharbour e harbour, pra tirar dúvida, porque ele comentou que no xharbour funcionava.
É esquisito a mesma coisa ter dois funcionamentos diferentes, mas é assim.
Este funcionamentos estranhos acabam confundindo mais que ajudando. Mas se funciona, então deixa.
Como diz a máxima do Tecnico de Hardware: A máquina empoeirada tá funcionando? Se sim, deixa com a poeira porque se tirar eela pára.
POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER
Enviado: 21 Mai 2024 15:07
por deividdjs
Galera .. estou com uma função aqui .. preciso saber como faço para mudar a linha de um tbrowser conforme a condição de uma outra tabela .... por exemplo estou no cadastro de cliente e quero pintar todos os cliente que tenham conta atrasadas .. até consegui fazer, porem fica muito lento em rede ...
Código: Selecionar todos
local Regra := "CLIENTES_EM_ATRASO() == 'S'"
calias := "cli"
nordem := "clicx_02"
DB_CLI := WIN(03,01,22,78, "* * REGISTRO DE CLIENTES * *", WT_VERM1BRANCO, WD_VERM1BRANCO)
DB_CLIENTE( aCab, aCamp, aPict, cAlias, nOrdem, Regra)
return nil
*----------------------------------------------------------------*
function DB_CLIENTE( aCab, aCamp, aPict, cAlias, nOrdem, Regra )
*----------------------------------------------------------------*
local oTAB, oCol, nKey, nRow, nCol, cTela, cArea
local OLDREC, OBROWSE, OCOLUNA, PESQUISA, v_atraso
select( cAlias )
set order to nOrdem
go top
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)
oTab:ColorSpec := "N/W*, W+/B+, R+/W*, R+/N+, GR+/N, B+*/W, R+*/W, GR*/W*"
oTab:SkipBlock := {| nSkip | dbSkipBlock( nSkip, oTab ) }
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
[b]IF CLIENTES_EM_ATRASO() == 'S' [/b]
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(0)
nKey := Inkey( 0, HB_INKEY_ALL )
........
// função q vasculha os contas a receber
Código: Selecionar todos
*-----------------------------*
Function CLIENTES_EM_ATRASO() // BUSCA CLIENTES EM ATRASO
*-----------------------------*
LOCAL v_atraso := "N"
IF RECEBER->(ORDSETFOCUS("RECCX_15"),DBSEEK(CLI->cc_codcli))
IF RECEBER->cc_receb = ' ' .and. RECEBER->cd_dtvenc < date()
v_atraso := "S"
ENDIF
ENDIF
return(v_atraso)
se alguém puder me ajudar a dar uma enxugada nisso agradeço! sinceramente não sei se do jeito q fiz é a jeito certo ... localmente funciona bem .. porem em rede fica complicado !! rsrs
Abraço!
POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER
Enviado: 06 Jun 2024 11:11
por deividdjs
Bom dia Amigos ..
Alguém tem ideia de como eu fazer uma rotina que marque no TBROWSER em vermelho os clientes que estejam com contas atrasadas no contas a receber ?? eu até fiz uma porem em rede ela ficou lenta .. preciso de algo q seja mais rapido ... o exemplo está no post acima .. alguma luz
Saludos ...
DJS
POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER
Enviado: 06 Jun 2024 14:19
por JoséQuintas
Crie uma coluna com isso.
Coloque no codeblock das colunas pra alterar a cor.
Não lembro como pegar o valor da coluna do browse
Não sei se vai ficar mais rápido.
Se o arquivo pesquisado não estiver indexado pra em atraso primeiro, só um SEEK não vai resolver.
Ou crie um temporário só com devedores, teoricamente arquivo pequeno.
SEEK, if eof() ok, senão devedor.
POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER
Enviado: 06 Jun 2024 15:39
por deividdjs
JoséQuintas escreveu:Coloque no codeblock das colunas pra alterar a cor.
eu fiz isso Zé .. porem cada toque q dou no cursor dentro do browser ele checa e fica super lento em rede ...
essa é a função :
TBROWSE:
Código: Selecionar todos
*----------------------------------------------------------------*
function DB_CLIENTE( aCab, aCamp, aPict, cAlias, nOrdem, Regra )
*----------------------------------------------------------------*
local oTAB, oCol, nKey, nRow, nCol, cTela, cArea
local OLDREC, OBROWSE, OCOLUNA, PESQUISA, v_atraso
select( cAlias )
set order to nOrdem
go top
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)
oTab:ColorSpec := "N/W*, W+/B+, R+/W*, R+/N+, GR+/N, B+*/W, R+*/W, GR*/W*"
oTab:SkipBlock := {| nSkip | dbSkipBlock( nSkip, oTab ) }
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 )
// muda de cor somente a coluna conforme a situa‡Æo
if i = 4
oCol:COLORBLOCK :={|X| IIF ( CC_FJ = "F" , {6,2} ,;
IIF ( CC_FJ = "J" , {8,2},{1,2} ))}
endif
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 CLIENTES_EM_ATRASO() == 'S'
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( 0, HB_INKEY_ALL )
Código: Selecionar todos
*-----------------------------*
Function CLIENTES_EM_ATRASO() // BUSCA CLIENTES EM ATRASO
*-----------------------------*
LOCAL v_atraso := "N"
IF RECEBER->(ORDSETFOCUS("RECCX_15"),DBSEEK(CLI->cc_codcli))
IF RECEBER->cc_receb = ' ' .and. RECEBER->cd_dtvenc < date()
v_atraso := "S"
ENDIF
ENDIF
o que vc acha q posso mudar aí pra melhorar o desempenho ?? local fica excelente mais em rede vira uma tartaruga ... mesmo problema eu enfrente no cadastro de produtos ..
Sds,
return(v_atraso