Filtro=""
set key -3 to SNomes
@ 10,10 get Tcod pict "99" valid Tcod>0
read
set key -3 to
if lastkey()=27
exit
Endif
O "Set key -3 to Snomes" carrega o Dbedit(). Caso o usuario não deseje trazer nenhum item do dbedit(), ele teclará [ESC] para abandonar o Dbedit() e retornar para o Get.
O problema é que o mesmo [ESC] que o usuário clica no Dbedit() , continua valendo para o GET do código (@ 10,10 get Tnome pict "@!" ) , então, o programa volta do Dbedit e automaticamnte cai no "if lastkey()=27" e encerra sozinho, via exit.
Meu desejo é que o [ESC] do Dbedit() não afete o meu Get e o usuário possa teclar outro Tcod.
Tem como evitar isso ?
Abaixo o trecho do Dbedit()
Código: Selecionar todos
*----------
Func SNomes
*----------
Sele VServ
Ordsetfocus(arqVServ1)
clea gets
Decl vet1[2]
vet1[1]="Nome"
vet1[2]="Cod"
Decl vet2[2]
vet2[1]="@X"
vet2[2]="99"
Decl vet3[2]
vet3[1]="Nome"
vet3[2]="Cod"
Set key -3 to
If .not. empty(FILTRO)
Set Filter to &Filtro
endif
DbGoTop()
TelSalv=win(08, 2,21,77, "tabela Servicos" )
Item=Dbedit(08, 2,21,77,vet1,"extra",vet2,vet3,"Ä","³")
rstenv(TelSalv)
If lastkey()#27
Tcod=Cod
else
Tcod=0
Endi
If .not. empty(FILTRO)
VServ->(DbClearFilter())
Endif
Filtro=""
Ordsetfocus(arqVServ0)
Retu .t.
Código: Selecionar todos
*--------------
Func Extra
*-------------
Para val_
IF VAL_=0
RETU 1
ENDI
If lastkey()=27
RETVAL=0
Elseif lastkey()=-1
Setcolor( "n/w,n*/w, , , n*/w" )
TelSalv:=NBox(11,29,11,55,"w/r",.t.) && .t. com sombra
DO WHIL .T.
Xdes=space(20)
Setcolor( "n/w,n*/w, , , n*/w" )
@ 11,29 clea to 11,55
@ 11,29 SAY "Nome: "
@ 11,35 Get xdes pict '@x'
read
RstEnv(TelSalv)
if lastkey()=27.or.empty(XDES)
RETVAL=1
DbGoTop()
EXIT
Elseif lastkey()=13
SET SOFT ON
SEEK UPPE(XDES)
SET SOFT OFF
RETVAL=2
EXIT
Endi
Endd
Elseif lastkey()=13 .or. lastkey()=1024 && enter
ITEM=RECN()
GOTO ITEM
RETVAL=0
Else
RETVAL=1
ENDI
Retu retval
Gabriel



