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?
Buscar dentro de um achoice
Moderador: Moderadores
- juniorcamilo
- Usuário Nível 3

- Mensagens: 343
- Registrado em: 10 Nov 2006 09:12
- Localização: Pará
- juniorcamilo
- Usuário Nível 3

- Mensagens: 343
- Registrado em: 10 Nov 2006 09:12
- Localização: Pará
Buscar dentro de um achoice
Bom dia!!
Amigos pesquisando e pegando uma função aki outra ali do nosso FORUM, fiz assim:
Obs: caso algum amigo tenha sugestão em minimizar o código!! eu agradeço!!
Amigos pesquisando e pegando uma função aki outra ali do nosso FORUM, fiz assim:
Código: Selecionar todos
********************************************************************
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
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Buscar dentro de um achoice
Bom dia...
Juniorcamilo, dá para colocar uma imagem disso funcionando ?
Obrigado
Rubens
Juniorcamilo, dá para colocar uma imagem disso funcionando ?
Obrigado
Rubens
"Eu e minha casa servimos ao Senhor e você
"
- juniorcamilo
- Usuário Nível 3

- Mensagens: 343
- Registrado em: 10 Nov 2006 09:12
- Localização: Pará
Buscar dentro de um achoice
vê se fica mais fácil o entendimento:rubens escreveu:Bom dia...
Juniorcamilo, dá para colocar uma imagem disso funcionando ?
Obrigado
Rubens
Código: Selecionar todos
*---------------------------------------------------------------------------------------------------------
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- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Buscar dentro de um achoice
Lembrando que ao invés de Achoice, melhor um TBrowse.
Deve ter exemplos aqui no fórum pra isso.
Deve ter exemplos aqui no fórum pra isso.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/