Jump to content
Fivewin Brasil

Problema com Return no Listbox


ablemos

Recommended Posts

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

// 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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...