Gostaria de saber se alguem aqui já tentou inserir dado direto do tbrowse, tipo assim; pressionando um tecla determinada ele permitirá inserir os dados dentro do tbrowse, abrindo um linha para a digitação. Já conseguir parte dela, só q quando volto ela retorna para o registro anterior.
Alguém pode me ajudar? Agradeceria m+.
Obrigado!!
Machado_s
dilsonmachado@hotmail.com.br
Segue abaixo minha rotina.
FUNCTION Incluir_()
LOCAL l_1:=5, c_1:=2, l_2:=22, c_2:=78, oTela:= SaveTela(0,0,24,79), mTela, n_item:={}
SETCOLOR(drvcorget)
MOLDURA(l_1,c_1,l_2,c_2)
@ l_1, c_1+2 Say " INCLUSŽO " COLOR(drvtitget)
@ l_1+1, c_1+2 Say "N£mero =[ ] Data da Solicita‡„o =[ / / ]"
@ l_1+2, c_1+2 Say "Setor =[ - ] Empresa =[ ] Req.=[ ]"
mTela:= SaveTela(l_1,c_1,l_2,c_2)
SETCURSOR(1)
WHIL TRUE
SELE SOLICITO
M->numero:= PsqContrl(DBF())
M->setor:= M->empress:= 0
M->data:= DATAc
M->emp:= SPAC(1)
M->requis:= usuario
SETCOLOR(drvcorget+","+drvtitmsg+",,,"+drvtitget)
SetKey(K_F3,{||PegaVar(ReadVar())})
@ l_1+1, c_1+11 Get M->numero PICT "@K 99999"
Dre()
If LASTKEY() == K_ESC
EXIT
Endi
Nub:= 1
SELE ITE
DBSeek(STR(M->numero,5))
IF !FOUND()
SETCOLOR(drvcorget+","+drvtitmsg+",,,"+drvtitget)
@ l_1+1, c_1+65 Get M->data PICT "@D" VALID M->data=DATAc
@ l_1+2, c_1+11 Get M->setor PICT "@K 99" VALID PsqSet(l_1+2,c_1+15) WHEN ShowT(0)
@ l_1+2, c_1+42 Get M->emp PICT "@!" VALID PsqEmp(l_1+2,c_1+42) WHEN ShowT(1)
@ l_1+2, c_1+65 Say M->requis PICT "@!" COLOR(drvtitmsg)
Dre()
If LASTKEY() == K_ESC
EXIT
Endi
ENDI
Camp_db:= {'item','descricao','unid','qtd'}
Tit_db := {' ITEM','DESCRICAO DO ITEM','UNI','QTD.'}
Pit_db := {'99999','@!','!!!','9999'}
Lag_db := {5,40,3,4}
Chav_ := 'STR(M->numero,5)'
CriaTbr(l_1+3,c_1+1,l_2-1,c_2-1,Camp_db,Tit_db,Pit_db,Lag_db,Chav_) // esta rotina e de um irmão.
RestoreTela (mTela)
ENDD
SETCURSOR(0)
RestoreTela (oTela)
RETURN(.t.)
FUNCTION CriaTbr(Li,Ci,Lf,Cf,aCamp,aTitu,aPict,aLarg,xChave)
Local oTbc
Local i
Local nTecla
Local xRetorno
Local Cor_ant:= SETCOLOR()
Local bRead
oTbr:=TBrowseDb(Li,Ci,Lf,Cf)
oTbr:HeadSep :="ÍÍÍ"
oTbr:ColSep :=" ³ "
oTbr:FootSep :="ÍÍÍ"
SELE ITE
DBGoTop()
FOR i:=1 To Len(aCamp)
oTbc:=TbColumnNew(aTitu,FieldWBlock(aCamp,Select()))
oTbc:Picture:=aPict
oTbc:Width:=aLarg
oTbr:AddColumn(oTbc)
NEXT
If xChave <> Nil
DBSeek(xChave,.F.)
oTbr:GoTopBlock :={||DBSeek(xChave,.F.)}
oTbr:GoBottomBlock:={||Iif(DBSeek(UltiCha(xChave),.F.),DBSkip(-1),DBSkip(0))}
oTbr:SKipBlock :={|nParaMover|MoveReg(nParaMover,xChave)}
oTBr:GoTop()
WHIL (.t.)
SETCURSOR(0)
Whil ( !oTBr:Stabilize () ); endd
If oTBr:Stable
nTecla:= INKEY(0)
Endi
DO Case
Case (nTecla == K_ESC); Exit
Case (nTecla == K_DOWN); oTBr:down()
Case (nTecla == K_UP); oTBr:up()
Case (nTecla == K_LEFT); oTBr:left()
Case (nTecla == K_RIGHT); oTBr:right()
Case (nTecla == K_HOME); oTBr:Home()
Case (nTecla == K_END); oTBr:End()
Case (nTecla == K_PGUP); oTBr:pageup()
Case (nTecla == K_PGDN); oTBr:pagedown()
Case (nTecla == K_CTRL_PGUP); oTBr:gotop()
Case (nTecla == K_CTRL_PGDN); oTBr:gobottom()
Case (nTecla == K_CTRL_HOME); oTBr:PanHome()
Case (nTecla == K_CTRL_END); oTBr:PanEnd()
Case (nTecla == K_CTRL_LEFT); oTBr:PanLeft()
Case (nTecla == K_CTRL_RIGHT); oTBr:PanRight()
Case (nTecla == K_ENTER)
*Case (nTecla == K_ALT_I); i:=.t.; Read_rec(r,i)
Case (nTecla == K_ALT_I); i:=.t.; r:= row();Read_rec(r,i,M->numero)
ENDc
oTBr:RefreshAll()
ENDD
Endi
Return(oTbr)
***********************************************
Static Function read_rec (row,inserting,number)
***********************************************
local old_color,savebottom
local i_item,i_descricao,i_unid,i_qtd
local getlist := {}
savebottom := SaveTela(24,0,24,79)
old_color := SETCOLOR("n/bg")
SETCURSOR(1)
*@ 24, 0
*@ 24, 1 say if(inserting,"Inserting","Editing")
*@ 24,67 say "Esc to Abort"
i_item := ITE->item
i_descricao := ITE->descricao
i_unid := ITE->unid
i_qtd := ITE->qtd
SETCOLOR(",n/w")
@ row,10 get i_item pict "99999"
@ row,18 get i_descricao pict "@!"
@ row,61 get i_unid pict "!!!"
@ row,68 get i_qtd pict "9999"
Read
SETCOLOR(old_color)
RestoreTela(savebottom)
if lastkey()=K_ESC
return .f.
endif
If inserting
if !Tpad_Reg()
return .f.
endif
Elseif !RLOCK()
return .f.
Endif
ITE->n_sol := number
ITE->item := i_item
ITE->descricao := i_descricao
ITE->unid := i_unid
ITE->qtd := i_qtd
dbUNLOCK()
if inserting
Keyboard chr(1)
endif
SETCURSOR(0)
Return .t.
FUNCTION Tpad_Reg()
If !NetErr()
dbAPPEND()
Return(.t.)
Else
Return(.f.)
Endi
"Há três coisas que nunca voltam atrás: a flecha lançada, a palavra pronunciada e a oportunidade perdida". (Provérbio chinês)
Utilizando: Clipper 5.2e Blinker 7.0 Med

