DBedit esconde registros
Enviado: 12 Mai 2011 08:47
Bom dia meus amigos, tenho uma rotina feita com a funcao dbedit de cadastro de produtos que quando eu teclo INSert cadastra um novo item, o que ocorre é que ao teclar insert os registros que ja estavam dadastrados se deslocam para cima ficando o registro novo na primeira linha do dbedit, gostaria que quando a tecla insert fosse pressionada os registros que ja estivesse cadastrados permanecessem na mesma posição que estao e o novo registro fosse colocado abaixo destes. abaixo a rotina que estou utilizando
Código: Selecionar todos
centraopc("³ INS - Novo Item ³ DEL - Apaga item ³ ESC - Retorna ³","","","","",1)
sele itosisps
itensorc("E")
tela3=savescreen()
setcolor("n/W")
whil .t.
declare v_cpm[7],v_msc[7],v_cbc[7]
v_cpm[1] = "item_ito"
v_cpm[2] = "mate_ito"
v_cpm[3] = "qtde_ito"
v_cpm[4] = "vlun_ito"
v_cpm[5] = "vlto_ito"
v_msc[1] = "@!K"
v_msc[2] = "@!KS30"
v_msc[3] = "@ZE 99999.99"
v_msc[4] = "@ZE 9999999.99"
v_msc[5] = "@ZE 9999999.99"
v_cbc[1] = "Item"
v_cbc[2] = "Material"
v_cbc[3] = "Qtde."
v_cbc[4] = "Vl Unit"
v_cbc[5] = "Vl Total"
SETCOLOR("GR+*/N")
setcolor("w/b,w+/r,n/n,n/n,n/w")
@22,20 SAY"INSERT - Novo Item DELETE - Apagar item ESC-Voltar "
dbedit(12,03,21,76,v_cpm,"trataorc",v_msc,v_cbc,"ÄÂÄ"," ³ ","ÄÁÄ")
if lastkey() == K_ESC
exit
endi
endd
restscreen(,,,,tela3)
func trataorc(modo,coluna)
campo := v_cpm[coluna]
masca := v_msc[coluna]
if modo = 0 .or. modo == 1 .or. modo == 2
return(1)
elseif modo == 3
return(1)
elseif modo == 4
igual_var()
nume_ito = orcsisps->nume_orc
do case
case lastkey() = ( K_INS )
if .not. adireg(0)
beep()
alert("InclusÆo nÆo foi bem sucedida",3)
retu .f.
else
repl flag_ito with orcsisps->flag_orc
repl data_ito with orcsisps->data_orc
repl nume_ito with orcsisps->nume_orc
numitem()
repl item_ito with pitem_ito
set cursor on
keyb chr(K_CTRL_HOME ) + chr ( K_ENTER )
return(2)
endi
case lastkey() == K_DEL
if(!eof())
if .not. reglock(5)
beep()
alert("ExclusÆo mal sucedida",3)
return (1)
else
dele
mensagem("Tecle <ESC> para sair")
unlock
return(2)
endif
endi
case lastkey() == K_DOWN
if eof()
msg("Final do arquivo encontrado")
skip-1
endi
case lastkey() == K_UP
if bof()
msg("Inicio do arquivo encontrado")
endi
case lastkey() == K_ESC
return(0)
case lastkey() == K_ENTER
do while .t.
if rlock()
exit
endif
enddo
if coluna==1
@row(),col() get pitem_ito pict"@!K"
set cursor on
read
dbegets()
return(2)
elseif coluna==2
@row(),col() get pmate_ito pict"@!KS30"
set cursor on
read
dbegets()
return(2)
elseif coluna==3
@row(),col() get pqtde_ito pict"@ZE 99999.99"
set cursor on
read
dbegets()
return(2)
elseif coluna==4
@row(),col() get pvlun_ito pict"@ZE 9999999.99";
valid subtot("pqtde_ito","pvlun_ito","pvlto_ito")
set cursor on
read
dbegets()
return(2)
elseif coluna==5
@row(),col() get pvlto_ito pict"@ZE 9999999.99"
set cursor on
read
dbegets()
return(2)
endi
set cursor on
otherwise
return(1)
endcase
endif
func dbegets(par1)
set cursor off
repl_var()
dbunlock()
dbcommit()
IF LASTKEY()==K_ESC
RETURN(2)
ENDI
keyb chr( K_RIGHT ) + chr ( K_ENTER )
retu .t.