Posicionamento DBEdit ... ? << RESOLVIDO >>

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

Moderador: Moderadores

Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Mensagem por fladimir »

Colega Alberto eu testei e após o primeiro item realmente ele alcança o objetivo de ir para a linha abaixo e aguardar um próximo, mas não sei se vc verificou se vc continuar a acrescentar mais produtos ele dá o "pire-paque", ou seja, ele não obedece, ele vai para o primeiro item, primeira linha, não fica na última em branco esperando.

Grato,

:)Pos
Avatar do usuário
alberto_dias
Usuário Nível 2
Usuário Nível 2
Mensagens: 64
Registrado em: 10 Abr 2005 09:46
Localização: Taboão da Serra - SP
Contato:

Mensagem por alberto_dias »

Caro Fladimir,
Concluo que estamos usando algum programa ou compilador em versoes diferentes, pois testei , recompilei e ele esta "otimo", estou utilizando
xharbour, 0.99.70 + Bcc 5.5.1, junto com BRMAKE 2.05, e + Gtwvw.
Talvez esteja ai a diferenca,(veja o ini) nao uso a Gtwin.lib, abaixo
envio o bat de compilacao o ini e o mlk, teste com eles e veja o resultado:
===============================================
@echo on
SET CLIPPERCMD=
IF EXIST %1.EXE DEL %1.EXE
IF EXIST *.OBJ DEL *.OBJ
BRMAKE %1
IF EXIST %1.EXE UPX -1 %1.EXE
======================
/* BRMAKE para Harbour/MiniGUI Versão 2.05 */
/* Utilizando Compilador HARBOUR */
/* Alberto Dias - 23/12/2006 11:30 hs */

[MINIGUI]
MiniGUI Path=C:\

[HARBOUR]
Harbour Path=C:\xHARBOUR
Harbour Flags= -n -m

[BCC55]
Bcc55 Path=C:\BORLAND\BCC55

[HARBOUR BASIC LIBRARY]
Lib=rtl.lib
Lib=vm.lib
/* Lib=gtwin.lib */
Lib=gtwvw.lib
Lib=lang.lib
Lib=macro.lib
Lib=rdd.lib
Lib=hbsix.lib
Lib=common.lib
Lib=libct.lib
Lib=libmisc.lib
Lib=codePage.lib
Lib=dbfcdx.lib
Lib=dbffpt.lib
Lib=dbfntx.lib
Lib=dbfdbt.lib
Lib=bcc640.lib
Lib=pp.lib
Lib=optcon.lib
Lib=what32.lib
Lib=ct.lib
Lib=fmstat.lib

[MISC]
Video Mode=disabled
Compress With UPX=N
language=PT
STOP=N
===============
# GRAFICO = SIM (YES)
GUI=Y

# NOME DO EXECUTAVEL
exefile teste1.exe

# ARQUIVO PRINCIPAL // * PRINCIPAL *
file teste1.PRG

=======================================
ABAIXO A COPIA DO PRG, POSSO TER ENVIADA A ERRADA. :-o
=======================================

Código: Selecionar todos

// /////////////////////////////////////////////////////////////
// 02/07/2007                                                 //
// ORIGINAL ESCRITO POR FLADIMIR ( PCTOLEDO )                 //
// COMPILADO EM XHARBOUR 0.99.70 ( SIMPLEX ) + BORLAND 5.5.1  //
// BRMAKE 2.05                                                //
// /////////////////////////////////////////////////////////////

#include "common.ch" 
#include "inkey.ch" 

FUNCTION MAIN() 

REQUEST DBFCDX 
RDDSETDEFAULT('DBFCDX') 

CLS 

USE PLANILHA alias FILETEMP new exclusive 
zap 
APPEND BLANK 
FILETEMP->( DBGOTOP() )
DBSELECTAR("FILETEMP")

PRIVATE bCamp[5],bNomes[5],bPict[5],total:=0 

bCamp[1]  := "codprod" 
bCamp[2]  := "left(descricao,25)" 
bCamp[3]  := "quant" 
bCamp[4]  := "vendaprod" 
bCamp[5]  := "total" 

bNomes[1]  := "Codigo" 
bNomes[2]  := "   Descricao" 
bNomes[3]  := "   Quant" 
bNomes[4]  := "Vlr Venda" 
bNomes[5]  := "Total Ger" 

bPict[1] := "@!" 
bPict[2] := "@!" 
bPict[3] := "@E 9,999,999" 
bPict[4] := "@E 9999.99" 
bPict[5] := "@E 99999.99" 

@20,20 SAY "Pressione ENTER e Digite o Codigo do Produto" 
DBEDIT(05,02,15,76,bCamp,"Analise",bpict,bNomes,"Ä","|","")

RETURN 

********************** 
FUNCTION Analise(modo) 

LOCAL codigo:=SPACE(6),GETLIST:={} 
LOCAL qtd:=1,preco:=0 
LOCAL posreg:=0, precxquant:=0, cDescricao:=SPACE(40), maisum:=0, numLin:=0 


IF SELECT("PRODUTO")=0 
   USE Produto alias Produto new shared 
   Index on codprod TAG iProdCod TO PRODUTO.CDX 
ENDIF 

DBSELECTAR("FILETEMP") 
linha:=ROW() 

IF MODO==0 .OR. MODO==1 .OR. MODO==3 
   RETURN 1 
ELSEIF MODO==2 
   LOCATE FOR FILETEMP->codprod == SPACE(06) 
   IF FILETEMP->( !FOUND() ) 
      APPEND BLANK 
   ENDIF 
   FILETEMP->( DBGOTOP() )
   KEYBOARD  K_CTRL_PGDN
   RETURN 1
ELSEIF MODO==4 
  IF LASTKEY()!=K_ESC 
     linha  := ROW() 
     numLin:=ROW() 

     Produto->( ORDSETFOCUS(1) ) 
     codigo  := FILETEMP->codprod 
     @ numLin,08 GET codigo pict "999999" color",r/w" 
     READ 
     Produto->( ORDSETFOCUS(1) ) 
     IF Produto->( !DBSEEK( STRZERO(VAL(codigo),6 )) ) 
        alert("Produto com o codigo "+ALLTRIM(codigo)+" nao localizado") 
        RETURN 1 
       ENDIF 
     codigo:=Produto->codprod 
     DBSELECTAR("FILETEMP") 
       posreg := FILETEMP->( RECNO() ) 
     preco:=precod:=Produto->vendaprod 
     @ linha,08 SAY Produto->codprod COLOR "R/W" 
     cDescricao:=Produto->descprod 

     FILETEMP->descprod   := cDescricao 
     FILETEMP->descricao  := left(cDescricao,25) 

     @ linha,15 SAY left(cDescricao,25) COLOR "R/W" 
     @ linha,53 SAY preco PICTURE "@E 9999.99" COLOR "R/W" 
     @ linha,41 GET qtd PICTURE "@E 9,999,999" valid qtd>0 
     read 

     IF Produto->codprod==FILETEMP->codprod 
        preco:=FILETEMP->vendaprod 
     ENDIF 

     precxquant := preco * qtd 

     FILETEMP->codprod   := Produto->codprod 
     FILETEMP->descricao := left(cDescricao,25) 
     FILETEMP->quant     := qtd 
     FILETEMP->vendaprod := preco 
     FILETEMP->total     := precxquant 

     maisum:=FILETEMP->( RECNO() ) 

     // 02/07/2007
     // OBJETIVO-> MANTER SEMPRE UM REGISTRO AO FINAL NA TELA PARA DIGITACAO
     IF maisum > 8
        SKIP 2
     ENDIF

     FILETEMP->( DBSKIP() )

     posreg := FILETEMP->( RECNO() ) 
     FILETEMP->( DBGOTO(maisum) ) 
     FILETEMP->( DBGOTO(posreg) ) 

     IF !EMPTY(FILETEMP->codprod) 
        FILETEMP->( DBGOTOP() )
        KEYBOARD  K_CTRL_PGDN
        RETURN 1
     ENDIF 

     LOCATE FOR FILETEMP->codprod == SPACE(06) 
     IF FILETEMP->( !FOUND() ) 
        APPEND BLANK 
     ENDIF 
     FILETEMP->( DBGOTOP() )

     // 02/07/2007
     // OBJETIVO -> POSICIONAR NO PROXIMO REGISTRO ABAIXO
     // XHARBOUR 32 BITS  X CLIPPER 5.X
     KEYBOARD  K_CTRL_PGDN

     RETURN 1
  ELSEIF LASTKEY()=K_ESC 
     DBCLOSEALL() 
     CLS 
     QUIT 
  ENDIF 
ENDIF 
RETURN 1

============================================
TENTE NOVAMENTE UTILIZANDO ESTAS COPIAS.
OBS: NO SEU CADASTRO DE PRODUTO CADASTREI OS PRODUTOS
COM O CODIGO TIPO 000001, 000002 e assim por diante.
============================================
:D
Editado pela última vez por Pablo César em 09 Jul 2013 18:57, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Alberto Dias
Atual.: Harbour 3.2.0 dev (r1703241902) + Gtwvg E Hmg IDE 3.5
Máquina Notebook - DELL ( INTEL CORE i5 ) 8 GB
Sistema - Windows 10 64 Bits
Avatar do usuário
alberto_dias
Usuário Nível 2
Usuário Nível 2
Mensagens: 64
Registrado em: 10 Abr 2005 09:46
Localização: Taboão da Serra - SP
Contato:

Mensagem por alberto_dias »

Tive uma ideia Fladimir,
Se vc precisar, passe o seu e-mail e eu envio o programa ja compilado e vc testa para ver como ficou, ok
Have a nice day.
:D
Alberto Dias
Atual.: Harbour 3.2.0 dev (r1703241902) + Gtwvg E Hmg IDE 3.5
Máquina Notebook - DELL ( INTEL CORE i5 ) 8 GB
Sistema - Windows 10 64 Bits
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Mensagem por fladimir »

Também tive a mesma linha de raciocínio talvez seja algo aki não mais com o PRG e sim com o meu xHarbour... Utilizo o 0.99.71 com o HBMAKE.... faz isto manda o EXE para eu testar aki... meu e-mail é:


fladimir_arroyo@yahoo.com.br

Grato

:)Pos
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Conforme o Prometido.....no link abaixo tem uma pesquisa LETRA a LETRA pelo TBROWSE....
http://www.sygecom.com.br/xharbour/letra_a_letra.zip

Obs: se não me engano esse letra a letra foi tirado da qui mesmo....soh que tava com o DBEDIT() e agora esta usando o TBROWSE()...pode ser usado no xharbour ou no clipper...

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
alberto_dias
Usuário Nível 2
Usuário Nível 2
Mensagens: 64
Registrado em: 10 Abr 2005 09:46
Localização: Taboão da Serra - SP
Contato:

Mensagem por alberto_dias »

Prezado Fernando,
Muito obrigado,
Jah peguei e vi que funciona, vou estudar a logica e implementar nos meus projetos. :xau
Alberto Dias
Atual.: Harbour 3.2.0 dev (r1703241902) + Gtwvg E Hmg IDE 3.5
Máquina Notebook - DELL ( INTEL CORE i5 ) 8 GB
Sistema - Windows 10 64 Bits
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

alberto_dias escreveu:Prezado Fernando,
Muito obrigado,
Jah peguei e vi que funciona, vou estudar a logica e implementar nos meus projetos. :xau
Tche, isso não foi pra min neh.......eu sou Leonardo....mas qualquer coisa poste ai.....

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Mensagem por fladimir »

Galera... Mistério ou BUG... ?

[Explico....

Primeiramente, obrigado colegas e o colega Alberto Dias por ter enviado o programa compilado para teste aki... realmente o que você enviou funciona... certinho mas o q eu compilo aki da o problema que originou o tópico... Agora eis o mistério ou BUG já conferi o PRG peguei e testei os 2 q vc mandou q na verdade são o mesmo mas poderia ser q tivesse, como vc mesmo disse, postado algo errado, e testei o outro tb e o problema continua...

Uso aki o xHarbour 0.99.71 q baixei através do CVS e compilei... + a lib CONTRIB tb do CVS... agora se realmente for este o problema pediria para confirmar a Dúvida para algum colega q tb usa o xHarbour 0.99.71 para compilar o PRG acima e testar para ver se ocorre o problema... caso sim como proceder..? Alguém saberia ?

Grato a Todos... :)Pos
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tche, eu uso o 0.99.71......manda tudo para o meu e-mail.....que faço os teste...e posto aqui os resultados...

leonardo@sygecom.com.br

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Mensagem por fladimir »

Obrigado Leonardo, já enviei para o seu e-mail... Ficamos no Aguardo...


Sucesso :)Pos
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tche, recebi o e-mail e dei uma olhada rapida...e se vc tirar o DBGOTOP() ele até fica na proxima linha...mas não dah o REFRESH, alias agora falando em REFRESH....de uma olhada no dbedit.ch e veja se tem alguma coisa que posso lhe ajudar a dar um REFRESH...ou ainda...mais tarde assim que sobrar um tempinho....vou passar aquele o seu exemplo para TBROWSE...ai a conversa muda...é melhor que o DBEDIT().

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Mensagem por fladimir »

Obrigado colega Leonardo, acredito mesmo q o melhor será mudar para Tbrowse, se o colega tiver tempo e converter o exemplo para TBrowse e disponibilizar para galera, acredito q será de grande ajuda não somente para mim, mas para muitos q utilizam o DBEDIT, mas q é estranho a coisa é, eu tb tinha tirado o DBGOTOP e testado e realmente ele fica na linha de baixo mas não dá o Refresh... qto a olhar o DBEDIT.CH, q vc falou, não entendi direito... desculpe....


Obrigado....

:)Pos
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tche, Agora no findi dou uma olhada e vejo o que dah pra fazer para transformar para Tbrowse...

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Conforme o Prometido e antes do Prazo...fiz o exemplo do Colega Fladimir no TBROWSE...claro que dah pra melhor muito, transformei em 15 min....mas a idéia inicial esta no link abaixo:
http://www.sygecom.com.br/xharbour/dbedit_x_tbrowse.zip

Nos dois links abaixo tem outros exemplos de Tbrowse() :
http://www.sygecom.com.br/xharbour/letra_a_letra.zip
http://www.sygecom.com.br/xharbour/tbrowse_xharbour.zip

E para aqueles que nunca usou o Tbrowse...podem dar uma olhada no linh abaixo que tem bastante coisa explicando mais sobre o tbrowse().
https://pctoledo.org/forum/viewtopic.php?t=5669

Espero ter Ajudado...

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

Realmente, é a decisão mais acertada. (Migrar para tbrowse)
Além de algumas funcionalidades a mais, ele torna a aplicação muito mais leve.
O dbedit deixa todo o sistema a sua merce, vc fica preso a ele.(No Clipper, o refresh é automatico, o simples fato de levar o cursor em determinado registro já faz um refresh.) Experimente por exemplo abrir sua aplicação num dbedit(), e abra o gerenciador de tarefas para ver como esta o consumo da cpu. Coisa que com o tbrowse não acontece.
O tbrowse por sua vez, deixa vc livre para ir aonde quiser. Porém precisa das chamadas :refreshcurrent() e :refreshall() para .... já sabe né ?
Agora caro colega Fladimir, mesmo com a solução do nosso amigo Leonardo, não deixe de esmiuçar cada função desta classe Tbrowse(), e vc verá que ela não é nenhum bicho de sete cabeças, e sim, muito facil de usar e que te dá recursos muito interessantes.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Responder