amigos tem como procurar dentro de um achoice ?
ex:
aMatFun := {"01 Joao","02 Maria","10 Marcos","12 Mario"}
nCont := achoice(12,21,17,47,aMatFun,.t.)
cVen := aMatFun[nCont]
quando eu digitar 01 ou Joao ele posicionar no achoice?

Moderador: Moderadores
********************************************************************
Function PRODVENDEDOR(cProduto,cDescricao, nVal, nQte)
Local getlist:={}, cVen := " ", tTel := savenv(09,17,22,52), bProdven := .f., bVen := .f.
Private nEle := 1, aMatFun := {}
if Select('VEN') == 0
AbreVEN()
bVen := .t.
endif
if Select('PRODVEN') == 0
AbreProVen()
bProdven := .t.
endif
if Select('VEN') # 0 .and. Select('PRODVEN') # 0
PRODVEN->(Dbsetorder(01))
if PRODVEN->(Dbseek(cProduto,.t.)) .and. PRODVEN->CODPRO == cProduto
aadd(aMatFun, "Escolha o Responsavel..")
VEN->(Dbsetorder(01))
do while PRODVEN->(!eof()) .and. PRODVEN->CODPRO == cProduto
if VEN->(Dbseek(PRODVEN->CODVEN))
aadd(aMatFun, PRODVEN->CODVEN+" "+UPPER(substr(VEN->NOMVEN,1,20)))
endif
PRODVEN->(Dbskip())
enddo
endif
if len(aMatFun) > 2
limpatecla()
Tela(10,18,20,49,substr(cDescricao,1,10)+iif(nQte < 1,trans(nQte,"99999.9999"),trans(nQte,"99999"))+" x "+trans(nVal,"@E 999999.99"),x_cortteld,x_cortelad)
windows(11,19,18,48)
do while .t.
cVen := achoice(12,21,17,47,aMatFun,.t.,"ProcPV",nEle,nEle)
if Lastkey() == 27
cVen := "XX"
exit
elseif cVen <= 1
loop
elseif cVen > 0
cVen := substr(aMatFun[cVen],1,2)
exit
endif
enddo
elseif len(aMatFun) == 2
cVen := substr(aMatFun[2],1,2)
endif
endif
if bProdven == .t.; Fechaarq("PRODVEN"); endif
if bven == .t.; Fechaarq("VEN"); endif
rstenv(tTel)
return cVen
*-------------------------
Function ProcPV(modo,ele,row)
Local nCont, nResp, cColor := Setcolor()
Static cConteudo := ""
cColor := "R"+substr(cColor,2)
*nRow := row //Atualizando a posicao do item com relacao as coordenadas do achoice
Do Case
Case modo == 0 //Tecla de movimentacao
Case modo == 1 //Se for precionado seta para cima no 1§ item
Keyboard Chr(30) //Forca a Tecla Ctrl PgDn e o item atual sera o ultimo
Case modo == 2 //Se for precionado seta para baixo no ultimo item
Keyboard Chr(31) //Forca a Tecla Ctrl PgUp e o item atual sera o primeiro
Case modo == 3 //Teclas de excessao
Do Case
Case Lastkey() == 027 //Esc
Return (0)
Case Lastkey() == 013 //Enter
Return (1)
Case Lastkey() == 007 //Del
Return (1)
Case Lastkey() == 022 //Ins
Return (1)
Case Lastkey() == 403 //Ctrl Del
Return (1)
Case Lastkey() == 416 //Alt Down
Return (1)
Case Lastkey() == 408 //Alt Up
Return (1)
Case Lastkey() == 021 //Ctrl U
Return (1)
Case Lastkey() == 008 //Back space
nResp := 0
if Len(cConteudo) > 0
cConteudo := substr(cConteudo,1,len(cConteudo)-1)
nEle := ascan(aMatFun,cConteudo)
if nEle <= 0 && procurar po concatenacao
for nCont = 1 to len(aMatFun)
nResp := at(cConteudo,aMatFun[nCont])
if nResp > 0; nEle := nCont; exit; endif
next
endif
endif
if nEle <= 0; nEle := 1; endif
@ 19,19 Say "Func./Ven.: "+Padr(aMatFun[nEle],15)
@ 19,30+nResp Say cConteudo color cColor
return (0)
Case Upper(Chr(Lastkey())) $ "ABCDEFGHIJKLMNOPQRSTUVWXYZ" .or. Upper(Chr(Lastkey())) $ "1234567890"
nResp := 0
cConteudo += Upper(Chr(Lastkey()))
nEle := ascan(aMatFun,cConteudo)
if nEle <= 0 && procurar po concatenacao
for nCont = 1 to len(aMatFun)
nResp := at(cConteudo,aMatFun[nCont])
if nResp > 0; nEle := nCont;exit; endif
next
endif
if nEle <= 0; nEle := 1; endif
@ 19,19 Say "Func./Ven.: "+Padr(aMatFun[nEle],15)
@ 19,30+nResp Say cConteudo color cColor
return (0)
Endcase
Endcase
Return (2)
return nT
rubens escreveu:Bom dia...
Juniorcamilo, dá para colocar uma imagem disso funcionando ?
Obrigado
Rubens
*---------------------------------------------------------------------------------------------------------
Function PRODVENDEDOR()
Local getlist:={}, cVen := " ", tTel := savenv(09,17,22,52)
Private nEle := 1, aMatFun := {}
aMatFun := {"Escolha o Responsavel..","01 - MARCOS","02 - JOAO","03 - MARIO"}
11,20 to 20,48
do while .t.
cVen := achoice(12,21,17,47,aMatFun,.t.,"ProcPV",nEle,nEle)
if Lastkey() == 27
cVen := "XX"
exit
elseif cVen <= 1
loop
elseif cVen > 0
cVen := substr(aMatFun[cVen],1,2)
exit
endif
enddo
elseif len(aMatFun) == 2
cVen := substr(aMatFun[2],1,2)
endif
endif
rstenv(tTel)
return cVen
*-----------------------------------------------------------------------------------------------------------
Function ProcPV(modo,ele,row)
Local nCont, nResp, cColor := Setcolor()
Static cConteudo := ""
cColor := "R"+substr(cColor,2)
Do Case
Case modo == 0 //Tecla de movimentacao
Case modo == 1 //Se for precionado seta para cima no 1§ item
Keyboard Chr(30) //Forca a Tecla Ctrl PgDn e o item atual sera o ultimo
Case modo == 2 //Se for precionado seta para baixo no ultimo item
Keyboard Chr(31) //Forca a Tecla Ctrl PgUp e o item atual sera o primeiro
Case modo == 3 //Teclas de excessao
Do Case
Case Lastkey() == 027 //Esc
Return (0)
Case Lastkey() == 013 //Enter
Return (1)
Case Lastkey() == 007 //Del
Return (1)
Case Lastkey() == 022 //Ins
Return (1)
Case Lastkey() == 403 //Ctrl Del
Return (1)
Case Lastkey() == 416 //Alt Down
Return (1)
Case Lastkey() == 408 //Alt Up
Return (1)
Case Lastkey() == 021 //Ctrl U
Return (1)
Case Lastkey() == 008 //Back space
nResp := 0
if Len(cConteudo) > 0
cConteudo := substr(cConteudo,1,len(cConteudo)-1)
nEle := ascan(aMatFun,cConteudo)
if nEle <= 0 && procurar po concatenacao
for nCont = 1 to len(aMatFun)
nResp := at(cConteudo,aMatFun[nCont])
if nResp > 0; nEle := nCont; exit; endif
next
endif
endif
if nEle <= 0; nEle := 1; endif
@ 19,19 Say "Func./Ven.: "+Padr(aMatFun[nEle],15)
@ 19,30+nResp Say cConteudo color cColor
return (0)
Case Upper(Chr(Lastkey())) $ "ABCDEFGHIJKLMNOPQRSTUVWXYZ" .or. Upper(Chr(Lastkey())) $ "1234567890"
nResp := 0
cConteudo += Upper(Chr(Lastkey()))
nEle := ascan(aMatFun,cConteudo)
if nEle <= 0 && procurar po concatenacao
for nCont = 1 to len(aMatFun)
nResp := at(cConteudo,aMatFun[nCont])
if nResp > 0; nEle := nCont;exit; endif
next
endif
if nEle <= 0; nEle := 1; endif
@ 19,19 Say "Func./Ven.: "+Padr(aMatFun[nEle],15)
@ 19,30+nResp Say cConteudo color cColor
return (0)
Endcase
Endcase
Return (2)
return nT
Usuários vendo este fórum: Nenhum usuário registrado online e 4 visitantes