POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER

Mensagem 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
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER

Mensagem 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?
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER

Mensagem por JoséQuintas »

E aquele select() ?
Se não muda área, vai bagunçar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER

Mensagem por JoséQuintas »

Esta é uma nova descoberta pra mim:
test.png
Dependendo da posição no fonte, é traduzido de um jeito.
Tanto no harbour quanto no xharbour
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER

Mensagem por JoséQuintas »

Depois dessa.... só o debug mesmo.
Pra que procurar, se ele pode procurar sozinho.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER

Mensagem 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 ..
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER

Mensagem por deividdjs »

Tem razão... foi um problema tão tosco que nem postar eu postei ... mais fica o aprendizado! Hehhe

Vlw Zé..
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER

Mensagem 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.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER

Mensagem 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.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER

Mensagem 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!
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER

Mensagem 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
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

POSIÇÃO DO REGISTRO AO RETORNAR PRA TELA ANTERIOR TBROWSER

Mensagem 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 :

Código: Selecionar todos

local Regra := "CLIENTES_EM_ATRASO() == 'S'"
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
Anexos
ESTOQUE.png
CLIENTE DEVEDOR EM VERMELHO
CLIENTE DEVEDOR EM VERMELHO
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Responder