ablemos Posted March 26, 2004 Report Share Posted March 26, 2004 Pessoal, estou com um problema no listbox. Tenho um listbox com um cadastro de produtos. Tenho um botão e a tecla ENTER com a função p/ alterar o cadastro do produto. Quando uso o botão dá certo, mas quando uso ENTER a função edita o primeira registro da lista, e não o selecionado. O que está acontencendo ??? Alessandro B. Lemos ablemos@ig.com.br Sorocaba/SP Quote Link to comment Share on other sites More sharing options...
gildo.rj Posted March 27, 2004 Report Share Posted March 27, 2004 Poste o codigo, para podermos ajudalo. gildo de oliveira Quote Link to comment Share on other sites More sharing options...
ablemos Posted March 30, 2004 Author Report Share Posted March 30, 2004 Gildo, demorei mas... se vc ainda quiser me ajudar, agradeço. Está bem resumido... :-| Outra probema que acontece, é o listbox a oLbxVen. Eu saio da tela de venda sem limpar o arquivo, e quando eu volto os registros estão no dbf mas o listbox não mostra os itens. Quando eu movo a a seta p/ direita, aparece somente o primeiro item. ... sele 0 use auxite alias auxite exclusive // auxiliar front (vendas) go top // MONTA VETOR DE PRODUTOS Priva nomite[08],desite[08],masite[08],lstite,cbcite nomite[01] = "substr(auxite->nompro_g,1,32)" nomite[02] = "transform(auxite->quapro_g,'999,999.99')" nomite[03] = "transform(auxite->vlrpro_g,'999,999.99')" nomite[04] = "transform((auxite->quapro_g * auxite->vlrpro_g)-auxite->despro_g,'999,999.99')" nomite[05] = "auxite->stapro_g" nomite[06] = "auxite->apapro_g" nomite[07] = "transform(auxite->despro_g,'99,999.99')" nomite[08] = "auxite->codpro_g" desite[01] = "DESCRICAO" desite[02] = "QTDE." desite[03] = "VLR. UNIT. R$" desite[04] = "VLR. TOTAL R$" desite[05] = "ENC." desite[06] = "APAR." desite[07] = "DESC." desite[08] = "CODIGO" masite[01] = "@!" masite[02] = "@e 99,999.99" masite[03] = "@e 99,999.99" masite[04] = "@e 99,999.99" masite[05] = "@!" masite[06] = "@!" masite[07] = "@e 99,999.99" masite[08] = "99999" for nrovet_t = 1 to len(nomite) if nrovet_t = 1 lstite := nomite[1] else lstite := lstite+","+nomite[nrovet_t] endi next cbcite = desite redefine listbox oLbxVen ; FIELDS &lstite. ; id 201 ; of oDlgVen ; fieldsizes 250, 070, 100, 100, 035, 070, 100, 070 oLbxVen:aHeaders:=cbcite oLbxVen:lCellStyle:=.t. oLbxVen:nLineStyle:= 4 oLbxVen:GoTop() oLbxVen:Refresh() oLbxVen:bKeyChar = { | nKey, nFlags | Ctrl_Teclas( oDlgVen,oLbxVen, nKey, nFlags, tipven) } ... func Ctrl_Teclas(oDlg, oLbx, nKey, nFlags, tipven ) do case case nKey == VK_RETURN sele auxite inspro(oDlg,"A") sele auxite go top endcase oLbx:Refresh() oDlg:Refresh() oDlg:SetFocus() return nil func inspro(oDlg,tip) Local oDlgPro Priva oSay[11] do while .t. sele auxite codpro_t = auxite->codpro_g nompro_t = auxite->nompro_g vlrpro_t = auxite->vlrpro_g quapro_t = auxite->quapro_g define dialog oDlgPro resource "INSPRO" of OwND oDlgPro:Cargo:= .F. redefine say oSay[1] id 101 of oDlgPro color "B/W" update ... activate dialog oDlgPro centered if oDlgPro:Cargo ... exit endif enddo oDlg:Refresh() oDlg:Setfocus() retu("") Alessandro B. Lemos ablemos@ig.com.br Sorocaba/SP Quote Link to comment Share on other sites More sharing options...
karinha Posted March 31, 2004 Report Share Posted March 31, 2004 redefine listbox oLbxVen ; FIELDS &lstite. ; id 201 ; of oDlgVen ; fieldsizes 250, 070, 100, 100, 035, 070, 100, 070 ; ON DBLCLICK( SuaFuncao( .F., oDbf ) ) // .F. OU .T. // .F. = Para Alterar // .T. = Para Novo Registro Exemplos: oLbxVen:bKeyDown := { | nKey | IF ( nKey = VK_RETURN, ; ( SuaFuncao( .F., oDbf ), ) ) } // .F. OU .T. // Se der erro, tire a virgula. oLbxVen:bKeyDown = { | nKey, nFlags | If( nKey == VK_RETURN,; MsgInfo( &lstite ),), Nil } João Santos São Paulo-Brasil (11) 3106-2832 a Noite karinhannah@ubbi.com.br Quote Link to comment Share on other sites More sharing options...
ablemos Posted March 31, 2004 Author Report Share Posted March 31, 2004 João, deixe explicar melhor. Lanço no meu listbox vários produtos. Tenho várias teclas de atalho (Return,Del,Ins,A,N,...), sendo que quando quero alterar um registro, eu uso o Enter, mas ele edita sempre o primeiro registro da lista. O outro problema é que quando saio da tela destes lançamentos, e o volto, era p/ estar todos os itens lá. Ou seja estão, mas não aparecem no listbox. Não sei se me expressei melhor, mas deu p/ entender ??? Alessandro B. Lemos ablemos@ig.com.br Sorocaba/SP Quote Link to comment Share on other sites More sharing options...
karinha Posted March 31, 2004 Report Share Posted March 31, 2004 Veja os exemplos de ListBox no samples, sua Listbox não está completa. Caso persista o 'erro' faça demo, escreva o que falta e envie-me. Abraços. João Santos São Paulo-Brasil (11) 3106-2832 a Noite karinhannah@ubbi.com.br Quote Link to comment Share on other sites More sharing options...
karinha Posted April 1, 2004 Report Share Posted April 1, 2004 // Alexandre, Tente assim... Function Ctrl_Teclas( oDlg, oLbx, nKey, nFlags, tipven ) LOCAL nRecNo do case case nKey == VK_RETURN sele auxite nRecno := RecNo() GoTo nRecno inspro(oDlg,"A") sele auxite go top endcase oLbx:Refresh() oLbx:SetFocus() oDlg:Refresh() oDlg:SetFocus() Return Nil João Santos São Paulo-Brasil (11) 3106-2832 a Noite karinhannah@ubbi.com.br Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.