Aqui vai parte de duas sub rotinas a primeira é a do dbedit dos campos e a segunda é a rotina que controla o dbedit
Mas não funciona porque quando carrego no espaço chr(32) o quadrado aparece mas logo desaparece. Já tentei de tudo e não consigo entender porque não se fixa lá o chr(254)
Código: Selecionar todos
/*
ÚÄ Program ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Aplica‡„o: ³
³ Descri‡„o: ³
³ Nome: MV.PRG ³
³ Autor: Carlos Lapa ³
³ Vers„o: ³
³ Data cria‡„o: 04-02-10 Actualizado em : þ04-02-10 ³
³ Hora cria‡„o: 23:17:50 Hora actualiza‡„o: þ23:17:50 ³
³ Fich. Make: ³
³ Fich. Exec.: Doc.s por: Carlos Lapa ³
³ Copyright: (c) 1910 by (c) Carlos Lapa, Inc. ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
*/
function mv
public vprecov
rot="MV"
priv l
sele 2
use dvendas inde dvendas1 alia b2
set filt to recno()>1
go top
sele 1
use vendas inde vendas1,vendas2 alia a1
set filt to recno()>1
go top
do whil .t.
publ v1a[1],v2a[1],v3a[1],v4a
if indexord()=1
tit("Vendas (por VENDA)")
v1a[1]="strzero(VENDA,5,0)+' '+dtoc(datactual)+' '+utente+' '+proc+' '+hora+' '+letraesc+cursoabv+str(tcopias)+tran(total,'@E 999,999.99')"
v3a[1]="Venda DataREFER Utente Proc Hora Esc Curso Copias Total"
* 12345 10/10/2009 12345678901234567890 123456 13:15:15 A CEF1A1 12345.12
* 1 2 3 4 5 6 7 8
* 012345678901234567890123456789012345678901234567890123456789012345678901234567890
pfs("[ENTER]EditaVenda,F4NovaVenda,F5ExcluiVenda,F7ReordenaLista")
elseif indexord()=2
tit("Vendas (por utente)")
v1a[1]="utente+' '+strzero(venda,5,0)+' '+dtoc(datactual)+' '+proc+' '+hora+' '+letraesc+cursoabv+str(tcopias)+tran(total,'@E 999,999.99')"
* 1 2 3 4 5 6 7 8
* 012345678901234567890123456789012345678901234567890123456789012345678901234567890
v3a[1]="Utente Venda DataREFER Proc Hora Esc Curso Copias Total"
* 12345678901234567890 12345 10/10/2009 123456 13:15:50 A CEF1A1 12345.12
pfs("[ENTER]EditaVenda,F4NovaVenda,F5ExcluiVenda,F7ReordenaLista")
endi
v2a[1]="@"
v4a=""
cor(2)
keyb chr(26)
dbedit(04,00,22,80,v1a,"fc",v2a,v3a,v4a)
l=lastkey()
do case
case l=27
exit
case l=13
mv_e() // edita venda
case l=-3
mv_n() // inclui nova venda
case l=-4
mv_d() // deleta venda
case l=-6
mv_r() // reordena
endc
endd
rele v1a,v2a,v3a,v4a
rot="MV"
/*
ÚÄ Program ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Aplica‡„o: ³
³ Descri‡„o: ³
³ Nome: X_DBE.PRG ³
³ Autor: Carlos Lapa ³
³ Vers„o: ³
³ Data cria‡„o: 04-02-10 Actualizado em : þ04-02-10 ³
³ Hora cria‡„o: 23:16:05 Hora actualiza‡„o: þ23:16:05 ³
³ Fich. Make: ³
³ Fich. Exec.: Doc.s por: Carlos Lapa ³
³ Copyright: (c) 1910 by (c) Carlos Lapa, Inc. ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
*/
FUNCTION FC
public rapaga,flag
priv l,m,f,x,cp,y,z,ix,ordem
cp=fcount()
l=0
for x=1 to cp
f=fieldname(x)
if !empty(&f)
l=1
exit
endi
next
f=l
l=lastkey()
x=1
do case
case l=26
case l=27
x=0
case l=13 .and. f=1
IF ifrot("rot,ORDENAP")
vcodigo=codigoprod
X=0
ENDIF
IF ifrot("rot,ORDENAPES")
rproc=proc
X=0
ENDIF
IF IFROT("rot,INCLUI_ITEM")
X=0
TECLA(13,1)
ENDIF
tecla(26,1)
if ifrot("rot,MV,VENTRA")
x=0
* tecla(26,1)
endi
IF ifrot("rot,INCLUI_ITEM,ENTRA_E")
IF vprecov=0
x=1
elseif vprecov<>0
x=0
ENDIF
ENDIF
IF ifrot("rot,MV_E")
X=0
ENDIF
if l=13
x=0
endi
/* IF ifrot("rot,INCLUI_ITEM")
keyboard(13)
X=0
ENDIF
*/
case l=27
case l=28 && F1 case l=28 F1
tecla(26,1)
case l=-2
* case l="P"
* x=0
case l=-1
IF ifrot("rot,INCLUI_ITEM,ORDENAP,ORDENAPES")
IF ifrot("rot,ORDENAP")
ENDIF
X=0
ELSE
tecla(26,1)
endif
case l=-3
if ifrot("rot,INCLUI_ITEM,ENTRA_E")
x=0
else
tecla(26,1)
endi
if ifrot("rot,MV,VENTRA")
* mv_n()
x=0
else
tecla(26,1)
endi
case l=-4 .and. f=1
&& F5 exclui item
IF ifrot("rot,MV_E")
KEYB CHR(26)
X=2
tecla(26,1)
ELSE
tecla(26,1)
ENDIF
IF ifrot("rot,INCLUI_ITEM,ENTRA_E") && .AND. rvtotal>=0
sele b21
set orde to 1
IF b21->cor="COR"
rplafc=rplafc+quant
RQUANTC=RQUANTC-QUANT
RTOTALC=RTOTALC-total
rgastoc=rquantc
elseif b21->cor="PRE"
rplafp=rplafp+quant
RQUANTP=RQUANTP-QUANT
RTOTALP=RTOTALP-total
rgastop=rquantc
ENDIF
/*@16,40 SAY "rtotalp"+STR(rtotalp)
@17,40 SAY "rtotalC"+STR(rtotalC)
@18,40 SAY "RQUANTP"+STR(RQUANTP)
@19,40 SAY "RQUANTC"+STR(RQUANTC)
aa=inkey(0)
wait ""*/
set deleted on
rvtotal=RVtotal-total
@05,70 say tran(rvtotal,'@E 999,999.99')
delete
dbcommit()
cor(21)
@ 21,47 say rplafp PICT "99999"
@ 21,55 say rplafc PICT "99999"
cor(2)
X=2
else
tecla(26,1)
endi
if ifrot("rot,MV")
sele 1
rproc=proc
SELE 5
use pessoal inde pessoa1
seek rPROC
rplafc=plafc+a1->quantc
Rplafp=plafp+a1->quantp
REPL plafP WITH RPLAFP
REPL PLAFC WITH RPLAFC
rgastop=gastop-a1->quantp
rgastoc=gastoc-a1->quantc
repl gastop with rgastop
repl gastoc with rgastoc
sele 1
mv_d()
x=2
inkey()
tecla(26,1)
else
tecla(26,1)
endi
if ifrot("rot,VENTRA")
mv_dD()
x=2
inkey()
tecla(26,1)
endi
case l=-5 .and. f=1
tecla(26,1)
case l=-6 .and. f=1 && F7
if ifrot("rot,MV,VENTRA")
x=0
else
tecla(26,1)
endi
case l=-7
tecla(26,1)
case l=-8
tecla(26,1)
case l=-9 && F10
IF ifrot("rot,MV_E")
KEYB CHR(26)
X=2
tecla(26,1)
ELSE
tecla(26,1)
ENDIF
IF ifrot("rot,MV_N")
X=2
ENDIF
IF ifrot("rot,MAIN")
X=0
ELSE
TECLA(26,1)
ENDIF
sele 21
count to ntotal for !deleted()
IF ifrot("rot,INCLUI_ITEM") .AND. ntotal>=1
set cursor off
mv_gr(v)
set cursor on
IF vali=.t.
rvtotal=0
set deleted off
sele 1
go bott
vvenda=venda+1
go top
append blank
repl venda with vvenda
repl tcopias with rquantp+rquantc
repl datactual with date()
repl proc with e->proc
repl utente with e->utente
repl letraesc with letrat
repl cursoabv with g->cursoabv
repl hora with time()
repl quantp with RQUANTP
repl quantc with RQUANTC
repl totalp with RTOTALP
repl totalc with RTOTALC
REPL TCOPIAS WITH RQUANTC+RQUANTP
sele 5
rgastop=rquantp+gastop
rgastoc=rquantc+gastoc
repl gastop with rgastop
repl gastoc with rgastoc
sele 1
/* @16,40 SAY "rtotalp"+STR(rtotalp)
@17,40 SAY "rtotalC"+STR(rtotalC)
@18,40 SAY "RQUANTP"+STR(RQUANTP)
@19,40 SAY "RQUANTC"+STR(RQUANTC)
@20,40 SAY "rquantp+rquantc"+STR(RQUANTP)+' '+STR(RQUANTC)
aa=inkey(0)
wait "" */
sele 21
set orde to 2
reind
do whil .T.
IF eof()
exit
ENDIF
seek venda
IF found()
sele 2
go bott
appe blan
repl proc with b21->proc
repl cursoabv with b21->cursoabv
repl cescalao with b21->cescalao
repl letraesc with b21->letraesc
repl venda with vvenda
repl item with b21->item
repl codigoprod with b21->codigoprod
repl quant with b21->quant
repl prod with b21->prod
repl precov with b21->precov
repl datactual with b21->datactual
repl cursoabv with b21->cursoabv
repl codigocur with b21->codigocur
repl cor with b21->cor
dbcommit()
SELE 5
inde on proc to rproc4
seek b21->proc
IF found()
* REPL QUANT WITH B21->QUANT
REPL plafP WITH RPLAFP
REPL PLAFC WITH RPLAFC
/* FOR n := 1 TO 1
@ 15,3 say rquantp
@ 16,3 say rquantc
@ 17,1 say gastop
@ 18,1 say gastoc
next
wait ""*/
endi
sele b21
vquant=quant
vprecov=precov
dbcommit()
sele 2
repl total with (round(vquant*vprecov,2))
repl datactual with date()
dbcommit()
rvtotal=rvtotal+total
sele 1
repla total with rvtotal
sele 21
IF deleted()
sele 2
dele
rvtotal=rvtotal-total
ENDIF
sele 1
replace total with rvtotal
sele 2
endi
sele 21
skip
endd
sele 1
set dele on
sele 21
reind
rot="MV"
endi
IF vali=.f.
x=0
cor(2)
l=lastkey()
IF l=13
return x
ENDIF
endi
set orde to 1
go top
* saida=.t.
endif
cor(2)
IF ifrot("rot,ENTRA_E") .AND. ntotal>=1
rvtotal=0
set deleted off
sele 1
go bott
vvenda=entra+1
append blank
repl entra with vvenda
sele 1
*replace datactual with vdata
sele 21
set orde to 2
reind
do whil .T.
IF eof()
exit
ENDIF
seek entra
IF found()
sele 4
go bott
appe blan
repl entra with vvenda
repl item with b21->item
repl codigoprod with b21->codigoprod
repl quant with b21->quant
repl prod with b21->prod
repl precov with b21->precov
* repl stock with b21->stock
SELE 3
seek b21->codigoprod
IF found()
REPL QUANT WITH B21->QUANT
* REPL STOCK WITH B21->STOCK
endi
sele b21
vquant=quant
vprecov=precov
dbcommit()
sele 4
repl total with (round(vquant*vprecov,2))
repl datactual with date()
dbcommit()
rvtotal=rvtotal+total
sele 1
repl datactual with date()
repl quant with b21->quant
* repl stock with b21->stock
repla total with rvtotal
sele 21
IF deleted()
sele 4
dele
rvtotal=rvtotal-total
ENDIF
sele 1
replace total with rvtotal
replace datactual with date()
sele 4
endi
sele 21
skip
endd
set dele on
sele 21
reind
rot="MV"
else
sele 21
rot="MV"
tecla(26,1)
endi
set orde to 1
go top
saida=.t.
case l=-40
tecla(26,1)
case l=-41
tecla(26,1)
*************************************************
case l=8 // Backspace
case l=127 // Crtl-Backspace
[color=#FF4040]case l=32
@ recno()-1,79 say IIF(venda=5,chr(254) ,"" )[/color]
case l=30 .or. l=31
case l=1 .or. l=6 .or. l=7 .or. l=22 .or. l=4 .or. l=19
* HOME END DEL INSERT DIR ESQ
case l=5 .or. l=24 .or. l=18 .or. l=3
* CIMA BAIXO PGUP PGDN
* case (l>47 .and. l<58) //===> 0/9
case l=13
IF ifrot("rot,INCLUI_ITEM,ENTRA_E")
X=0
ENDIF
if ifrot("rot,MVI")
count to l for !deleted()
go top
if l=20
save scre to l
men(0,4,0,402,0,0,0,0)
inkey(2)
rest scre from l
tecla(26,1)
else
x=0
endi
else
tecla(26,1)
endi
otherwise
tecla(26,1)
endc
retu x
Agradeço a vossa atenção para com estes problemas.