Pessoal,
converti o meu sistema mas estou esbarrando no dbedit.
Ele até abre o dbedit mas fica duplicando os caracteres quando teclo quaquer letra para iniciar a pesquisa.
Estou dependendo só disso para terminar a implantação.
Ajudem-me por favor
go top
private campos[1], mascara[1], nomes[1]
campos[1] = 'str(codigo,3)+" "+descr+" "+subst(SE->descricao,1,10)+" "+tipo+" "+str(nivel,1)+" "+str (nivel2,1)+" "+acompanha+" "+str(qtde,5)+" "+strtran(str(valor,7,2),".",",",)'
mascara[1] = '@!X'
nomes[1] = 'COD DESCRICAO SETOR T NIV A QUANT VALOR'
n1 := 3
n2 := 1
n3 := 22
n4 := 78
xdig = ""
Message("¦ [F2] CODIGO ¦ [ENTER] CONSULTA ¦",corm1)
set color to w+/b
dbedit(n1,n2,n3,n4,campos,'ordem4',mascara,nomes,,,,)
set color to
close data
return
Function Ordem4
parameters modo
rr = row()
Save screen to lptela
set cursor off
RestScreen(Row(),n2,Row(),n4,Transform(SaveScreen(Row(),n2,Row(),n4),repl("X"+Chr(112),2*n4)))
Inkey(0)
set color to w+/r
keyBoard Chr(LastKey())
do case
case LastKey()>64 .and. LastKey()<91 .or. LastKey()>96 .and. LastKey()<123;
.or. LastKey()=32 .or. lastkey()=128 .or. lastkey()=199;
.or. lastkey()>44 .and. lastkey()<58
Clear TypeAhead
set order to 2
xdig = xdig + upper(chr(lastkey()))
seek xdig
@ 1,1 say xdig color "w+/r"
return(2)
case lastkey()=5 .or. lastkey()=24 .or. lastkey()=31 .or. lastkey() = 30
xdig:= ""
@ 1,1 say repl(" ",15) color "w"
return(2)
case lastkey() = 8
xdig := subst(xdig, 1, len(xdig) - 1)
@ 1,1 say repl("Ä",15) color "w"
@ 1,1 say xdig color "w+/b"
return(2)
case lastkey() = -1
Clear TypeAhead
set order to 1
set cursor on
xcof := 0
@ 5,6 get xcof pict '999' color "w+/r"
read
set cursor off
if xcof = 0
go top
else
set softseek on
seek str(xcof,4)
set softseek off
if eof()
message("º CODIGO NAO ENCONTRADO! º",corm2,1.5)
restore screen from lptela
return(2)
endif
endif
restore screen from lptela
return(2)
case lastkey() = 13
clear typeahead
set color to
xrot := "C"
Proinclu()
set color to w+/b
restore screen from lptela
return(2)
case lastkey() = 27
Clear TypeAhead
return(0)
other
return(1)
endcase
return
Dbedit
Moderador: Moderadores
- odilon.informatica
- Usuário Nível 1

- Mensagens: 21
- Registrado em: 23 Out 2007 14:37
- Localização: Mairinque-SP
- Luciano Bonfim
- Usuário Nível 3

- Mensagens: 414
- Registrado em: 23 Ago 2007 09:34
- Localização: Rio de Janeiro / São Paulo
- Contato:
Amigo faz assim:
Código: Selecionar todos
dbedit(mlin_sup,mcol_sup,mlin_inf,mcol_inf, campo_db, "DBACTION", mask_db, tit_db)
function DBACTION
parameters mode,indx
public key_dbaction, key_stroke
key_stroke = lastkey()
retval=0
do case
case mode == 0
if key_stroke == K_HOME
go top
if bof()
skip
endif
elseif key_stroke == K_END
go bottom
if eof()
skip -1
endif
endif
retval = 1
case mode == 1
retval = 1
case mode == 2
retval = 1
case mode == 3
Rot_Mens([Arquivo Vazio], .F., .T.)
set cursor off
retval = 0
case mode == 4
if key_stroke == K_ESC
retval = 0
elseif key_stroke == K_ENTER
retval = 0
elseif key_stroke == K_F1
buffer = SAVESCREEN(0, 0, 24, 79)
dbeditsrch(mlin_sup,mcol_sup,mlin_inf,mcol_inf,mlin_sup-1,mcol_sup+1)
RESTSCREEN(0, 0, 24, 79, buffer)
else
retval = 1
endif
endcase
return(retval)
FUNCTION DBeditSrch
PARAMETER mtop, mleft, mbottom, mright, msgrow, midpoint
PRIVATE maxlength, srchstr, oldcolor, marker
marker = RECNO()
srchstr = []
maxlength = INDEXKEY(0)
maxlength = LEN(&maxlength)
oldcolor = SETCOLOR(cor[7])
@ msgrow, midpoint say '[ ' + SPACE(maxlength) + ' ]'
SETCOLOR(oldcolor)
DBEDIT(mtop, mleft, mbottom, mright, campo_db, 'helpact', mask_db, tit_db)
IF LASTKEY() = 27
GO marker
ENDIF
RETURN []
FUNCTION helpact
PARAM mode,indx
PRIVATE key, ret_val, marker
key = LASTKEY()
ret_val = 1
DO CASE
CASE mode<4 && idle
@ msgrow, midpoint + 2 + LEN(TRIM(srchstr)) say []
CASE KEY = 27 .OR. KEY = 13 && Esc or Enter
ret_val = 0
CASE KEY = 8 .OR. (KEY > 31 .AND. KEY < 123) .AND. TYPE('srchstr')<>'U'
IF key = 8
srchstr = SUBSTR(srchstr, 1, LEN(srchstr) - 1)
ELSEIF LEN(srchstr) < maxlength
srchstr = srchstr + UPPER(CHR(key))
ENDIF
marker = RECNO()
SEEK srchstr
IF !FOUND()
TONE(440,1)
GO marker
srchstr = SUBSTR(srchstr, 1, LEN(srchstr) - 1)
ELSE
ret_val = 2
ENDIF
oldcolor = SETCOLOR(cor[7])
@ msgrow, midpoint say '[ ' + srchstr + SPACE(maxlength-LEN(srchstr)) + ' ]'
SETCOLOR(oldcolor)
ENDCASE
RETURN ret_val
Muito Obrigado,
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Coloque um INKEY(0) após @ 1,1 say xdig color "w+/r" e veja se resolve.
xdig = xdig + upper(chr(lastkey()))
seek xdig
@ 1,1 say xdig color "w+/r"
INKEY(0) // aqui
return(2)
Jânio
xdig = xdig + upper(chr(lastkey()))
seek xdig
@ 1,1 say xdig color "w+/r"
INKEY(0) // aqui
return(2)
Jânio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
- odilon.informatica
- Usuário Nível 1

- Mensagens: 21
- Registrado em: 23 Out 2007 14:37
- Localização: Mairinque-SP

