Problema com FUNÇÃO

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

Moderador: Moderadores

Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Problema com FUNÇÃO

Mensagem por janio »

Olá,

Sempre utilizei a função abaixo SEM problemas no CLIPPER. Agora, no XRABO, toda tecla que pressiono aparecem DUAS VEZES. Como faço pra resolver este problema?

Código: Selecionar todos

STATIC FUNCTION F02
MENSAGEM(lf,ci,cf,"<F02> PROCURA CLIENTE")
set key -1 to EDITPRO1
return .T.

*---------------------------*
STATIC FUNCTION EDITPRO1(PNOM,PVAR)
*---------------------------*

SET KEY -1 to

PRIVATE PROCURA,WCOD
PROCURA=""
MENSAGEM(lf,ci,cf,"Digite o Cliente:") 
@ lf-01,ci+20 SAY "                       " COLOR('&vCOR_GET')
ENTER=3
SAVE SCRE TO TELA1

SELECT CLIENTE
DBSETORDER(2)
GOTO TOP

PRIVATE VETCAMPO[1], VETCAB[1]
VETCAMPO[1]:="LEFT(NOMCLI,30) + ' | ' + TRANS(CGCCLI, '@R 99.999.999/9999-99') + ' | ' + TRANS(CPFCLI, '@R 999.999.999-99')"
VETCAB[1]  :="Cliente                                CGC                CPF" 

WIN(06,04,15,73,, vCOR_DBE, vCOR_DB1)
CORES(4)
dbedit(07,05,14,72,VETCAMPO,"FUNC22",,VETCAB,"=")

IF LASTKEY() = 27
   set key -1 to EDITPRO1
   restore screen from TELA1
   MENSAGEM(lf,ci,cf,"<F02> PROCURA CLIENTE")
   CORES(1)
   RETURN .T.
ENDIF

DBsetorder(1)
vCODIGO := CODIGO
KEYBOARD CHR(13)
restore screen from TELA1
CORES(1)
RETURN .T.

*---------------*
FUNCTION FUNC22
*---------------*
PARAM A
B=LASTKEY()
IF A=1
   TONE(77,5)
   INKEY(.7)
ELSEIF A=2
   TONE(77,5)
   INKEY(.7)
ELSEIF A=3
   TONE(77,5)
   INKEY(.7)
   RETURN(0)
ENDIF

IF B>31 .AND. B<126 .OR. B=8
   CURSOR=SETCURSOR()
   SETCURSOR(1)
   WKSALVA=SAVESCREEN(23,00,23,79)
   MENSAGEM(lf,ci,cf,"Digite o Cliente:") 
   @ lf-01,ci+20 SAY "                       " COLOR('&vCOR_GET')

   DO WHIL .T.

      IF LASTKEY()<>8
         IF LASTKEY()<32 .OR. LASTKEY()>125
            EXIT
         ENDIF
      ENDIF
    
      IF LASTKEY()=8
         TAM=LEN(PROCURA)-1
         PROCURA=SUBSTR(PROCURA,1,TAM)
         @ lf-01,ci+20 SAY "                       " COLOR('&vCOR_GET')
      ELSE
         PROCURA+=UPPER(CHR(B))
      ENDIF

      @ lf-01,ci+20 SAY PROCURA Color('&vCOR_GET')
      DBSEEK(PROCURA,.T.)
      KEYBOARD CHR(255)
      RETURN(2)
   ENDDO
ENDIF
SETCURSOR(0)

IF B==13
   vCODIGO = CLIENTE->CODIGO
   PROCURA=""
   MENSAGEM(lf,ci,cf,"")
   KEYBOARD CHR(13)
   RETURN(0)
ENDIF
IF B=27
   PROCURA=""
   RETURN(0)
ENDIF
RETURN(1)
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
filizola
Usuário Nível 3
Usuário Nível 3
Mensagens: 421
Registrado em: 19 Ago 2003 20:10
Localização: Belo Horizonte/MG

Mensagem por filizola »

vc consequi utilizar DBEDIT com xharbour ???
se sim, como ??
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Mensagem por janio »

filizola escreveu:vc consequi utilizar DBEDIT com xharbour ???
se sim, como ??
Amigão, não entendi sua pergunta! Quer dizer que o DBEDIT não é compatível com o XRABO?

Tô há apenas uns 15 dias que migrei minha aplicação CLIPPER para o xharbour modo console. Utilizo muito o dbedit, MAS SOMENTE PARA FOLHEAR O BANCO DE DADOS, nunca para rotinas de INCLUSÃO ou ALTERAÇÃO.

Para isso que utilizo, o DBEDIT continua funcionando que é uma BELEZA, a não ser para o caso acima relatado.

Um abraço,

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
filizola
Usuário Nível 3
Usuário Nível 3
Mensagens: 421
Registrado em: 19 Ago 2003 20:10
Localização: Belo Horizonte/MG

Mensagem por filizola »

é que o dbedit nao funciona com o xharbour.
Avatar do usuário
filizola
Usuário Nível 3
Usuário Nível 3
Mensagens: 421
Registrado em: 19 Ago 2003 20:10
Localização: Belo Horizonte/MG

Mensagem por filizola »

é que o dbedit nao funciona com o xharbour.

vc tera que migrar para tbrowse
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

Mensagem por vagucs »

O DBEDIT funciona em xHarbour e ja está totalmente compativel com o clipper, em alguns casos podem ocorrer alguns problemas como os citados acima.

Notei que o DBEDIT nao ocila seu estado para a rotina do usuario quando executado da primeira vez.

Todos os meus sistemas eu ainda uso o DBEDIT consegui migrar todos para xHarbour e tenho migrado sempre sistemas com uso do DBEDIT tanto para Linux quanto para o Windows.

Depois que a sua tecla for pressionada vc tem que limpar o buffer do teclado, em alguns casos vc so conseguira se fizer algo assim

KEYBOARD "A"
INKEY(0)

so assim que o buffer parece dar uma limpada.
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Mensagem por janio »

vagucs escreveu: KEYBOARD "A"
INKEY(0)
so assim que o buffer parece dar uma limpada.
Valeu Wagner!

Coloquei INKEY(0) antes do RETURN(2) e funcionou direitinho!


desse jeito:

IF B>31 .AND. B<126 .OR. B=8
CURSOR=SETCURSOR()
SETCURSOR(1)
WKSALVA=SAVESCREEN(23,00,23,79)
MENSAGEM(lf,ci,cf,"Digite o Cliente:")
@ lf-01,ci+20 SAY " " COLOR('&vCOR_GET')

DO WHIL .T.

IF LASTKEY()<>8
IF LASTKEY()<32 .OR. LASTKEY()>125
EXIT
ENDIF
ENDIF

IF LASTKEY()=8
TAM=LEN(PROCURA)-1
PROCURA=SUBSTR(PROCURA,1,TAM)
@ lf-01,ci+20 SAY " " COLOR('&vCOR_GET')
ELSE
PROCURA+=UPPER(CHR(B))
ENDIF

@ lf-01,ci+20 SAY PROCURA Color('&vCOR_GET')
DBSEEK(PROCURA,.T.)
KEYBOARD CHR(255)
INKEY(0) /// acrescentei só isso
RETURN(2)
ENDDO
ENDIF
SETCURSOR(0)
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Responder