Página 1 de 1

Apos o desconto eu nao consigo acessar o objeto

Enviado: 11 Mai 2010 23:53
por marcos.gurupi
Caros, tenho uma tela de vendas tipo supermercado para que o usuario multiplique o produto ele deve usar o * (asteristico), sendo assim o sistema foca no get quantidade e quando o usuario tecla enter ele retorna no codigo, isso acontece normalmente, mas se o usuario chama a tela de desconto essa operacao nao funciona mais, o usuario tecla * (asteristico) e o focu vai pra algum lugar q nao eh a quantidade, apartir dai eu soh consigo fazer a operacao novamente quando eu entro e saio do dialog de venda. Segue abaixo como estah meu codigo. Uso o xhb 1.0.0 e hwgui 2.17

Código: Selecionar todos

@ 730,570  GET oRef       VAR vRef   VALID {||TratarRef()} ON KEYDOWN {|oBrwItem,nKey|BrowseDbKey(oBrwItem,nKey)}  MAXLENGTH 13 PICTURE "@!"        Size 270,50 STYLE ES_AUTOHSCROLL + WS_TABSTOP TOOLTIP "F1 Pesquisar produto pela descricao"

@ 741,155  GET oQuant     VAR vQuant VALID {||oRef:Refresh(),.T.}   MAXLENGTH 08 PICTURE "99999.99"  Size 250,50 STYLE ES_AUTOHSCROLL + ES_RIGHT + WS_TABSTOP

*************************************************************
STATIC FUNCTION BrowseDbKey(oBrwDb, nKey)
*************************************************************

If nkey == 106 //*
	oQuant:Enable()
	oQuant:SetFocus()
	vRef:=Space(13)
	Return .T.
Endif
IF nKey == 46   // DEL
ELSEIF nKey == VK_RETURN
END
Return .T.

Ai se no meio da venda eu chamar o desconto a operacao da quantidade nao funciona mais, o objeto oQuant nao eh mais habilitado e o focu sai do oRef e nao sei pra onde vai.

Código: Selecionar todos

Static Function Desconto()

Local oButtonOk,oDesconto
Local oVlrDesc,vVlrDesc:=0000.00
Local oDlgDesc
PREPARE FONT oFont NAME "Courier New" WIDTH 0 HEIGHT -12
INIT DIALOG oDlgDesc CLIPPER NOEXIT TITLE "Conceder desconto.";
   FONT oFont ;
   AT 0, 0 SIZE 440,160;
   STYLE DS_CENTER + WS_POPUP + WS_VISIBLE +WS_CAPTION + WS_SYSMENU

   @ 40,20  SAY oDesconto CAPTION "Desconto" Size 150,20 FONT HFont():Add( 'Courier New',0,-14,800,,,)
   @ 10,50  GET oVlrDesc       VAR vVlrDesc VALID {||iif(vVlrDesc>vTotal,.F.,.T.),.T.} MAXLENGTH 10 PICTURE "@e 999,999.99"        Size 270,50  FONT HFont():Add( 'Courier New',0,-36,800,,,)  STYLE ES_AUTOHSCROLL TOOLTIP "Digite o valor para o desconto."
                                                             
   @ 160,120 BUTTON oButtonOk CAPTION "&Ok" SIZE 100,30 ON CLICK {||iif(vVlrDesc>vTotal,MsgStop("Valor do desconto nao pode ser superior a compra.","Valor Recebido"),EndDialog())} OF oDlgDesc FONT HFont():Add( 'Courier New',0,-14,900,,,) STYLE WS_TABSTOP //+ BS_DEFPUSHBUTTON

ReadExit( .T. )
oDlgDesc:ACTIVATE()
If vVlrDesc#0
   vTotal:=vTotal-vVlrDesc
   oTotal:SetText(Transform(vTotal,"@E 99,999.99"))
   SELECT(ArquiTmp)
   dbappend()
   Replace descricao  with "Desconto de "+alltrim(Transform(vVlrDesc,"@E 9,999.99"))
   dbgotop()
   dbskip(-10)
   oBrwItem:Refresh()
Endif
oRef:SetFocus()
Return .T.

Nao sei mais o q fazer.

Marcos Roberto.

Re: Apos o desconto eu nao consigo acessar o objeto

Enviado: 12 Mai 2010 00:46
por alxsts
Olá!

Código: Selecionar todos

*************************************************************
STATIC FUNCTION BrowseDbKey(oBrwDb, nKey)
*************************************************************
If nkey == 106 //*
   oQuant:Enable()
   oQuant:SetFocus()
   vRef:=Space(13)
   Return .T.
Endif
É só um palpite após uma olhada superficial:
experimente retirar o comentário da linha If nkey == 106 //*. Creio que tudo após o /* esteja sendo tratado como comentário. Aí, as linhas onde você ativa e seta o foco em oQuant não são executadas. Deve haver um */ "bêbado" em algum outro lugar...

Re: Apos o desconto eu nao consigo acessar o objeto

Enviado: 12 Mai 2010 14:04
por esbasso
Voce usa a HWGUI do CVS ?

Re: Apos o desconto eu nao consigo acessar o objeto

Enviado: 12 Mai 2010 19:09
por sygecom
Marcos,
Porque aquele ReadExit( .T. ) no meio do código ?

Re: Apos o desconto eu nao consigo acessar o objeto

Enviado: 13 Mai 2010 11:19
por marcos.gurupi
Sim. Uso a hwgui do CVS. Leonardo eu jah tirei o comando e n mudou nada.

Sobre o // * A clausula IF estah sendo invocada portando nao eh por causa do comentario o problema. Mas obrigado.

Estou ainda sem solucao.

Marcos Roberto.

Re: Apos o desconto eu nao consigo acessar o objeto

Enviado: 13 Mai 2010 11:30
por sygecom
Olá Marcos,

Que tela ou função chama a Function Desconto() ?

Re: Apos o desconto eu nao consigo acessar o objeto

Enviado: 13 Mai 2010 18:11
por marcos.gurupi
Estou na tela de vendas e no meio de uma venda eu chamo o desconto, quando retorno eu n consigo mais usar o * (ASTERISTICO), ou seja, ao teclar o * o focu nao vai mais para o objeto oQuant mas sai do objeto oRef.

Espero ter conseguido ser claro.

Código: Selecionar todos


SET KEY 0,VK_F5  TO {||Autoriza(),iif(xitem#0,Iif(Acesso->SuperCaixa="S",Desconto(),MsgStop("E necessario entrar como Supervisor de Caixa",Acesso->Nome)),.T.),oRef:SetFocus(),oBrwItem:Refresh(),.T.}

@ 730,570  GET oRef       VAR vRef   VALID {||TratarRef()} ON KEYDOWN {|oBrwItem,nKey|BrowseDbKey(oBrwItem,nKey)}  MAXLENGTH 13 PICTURE "@!"        Size 270,50 STYLE ES_AUTOHSCROLL + WS_TABSTOP TOOLTIP "F1 Pesquisar produto pela descricao"

@ 741,155  GET oQuant     VAR vQuant VALID {||oRef:Refresh(),.T.}   MAXLENGTH 08 PICTURE "99999.99"  Size 250,50 STYLE ES_AUTOHSCROLL + ES_RIGHT + WS_TABSTOP

*************************************************************
STATIC FUNCTION BrowseDbKey(oBrwDb, nKey)
*************************************************************

If nkey == 106 //*
   oQuant:Enable()
   oQuant:SetFocus()
   vRef:=Space(13)
   Return .T.
Endif
IF nKey == 46   // DEL
ELSEIF nKey == VK_RETURN
END
Return .T.




Re: Apos o desconto eu nao consigo acessar o objeto

Enviado: 14 Mai 2010 09:28
por sygecom
Agora entendi, já tentou deixar o focu por ultimo no F2:

SET KEY 0,VK_F5 TO {||Autoriza(),iif(xitem#0,Iif(Acesso->SuperCaixa="S",Desconto(),MsgStop("E necessario entrar como Supervisor de Caixa",Acesso->Nome)),.T.),oBrwItem:Refresh(),oRef:SetFocus(),.T.}

Re: Apos o desconto eu nao consigo acessar o objeto

Enviado: 14 Mai 2010 19:16
por marcos.gurupi
Jah tentei sim. Mas o problema que a tecla acionada no ON KEYDOWN funciona direitinho, mas apos eu acionar o F5 desconto nao funciona mais, ou seja, se eu nao usar o F5 desconto funciona normalmente, mas apos eu usar o desconto e logo apos for usar o ON KEYDOWN o focu nao vai para objeto oQuant sai do objeto oRef mas nao vai para o oQuant.


Marcos Roberto.

Re: Apos o desconto eu nao consigo acessar o objeto

Enviado: 14 Mai 2010 19:27
por marcos.gurupi
Fiz alguns testes aqui e na funcao desconto eu tirei o GET sendo assim funcionou direitinho ao retornar. Qual seria o conflito do GET do desconto para o get da quantidade?

Marcos Roberto.

Re: Apos o desconto eu nao consigo acessar o objeto

Enviado: 14 Mai 2010 19:33
por marcos.gurupi
Kramba! Descobri! Finalmente. Era simplesmente o TOOLTIP da funcao desconto eu tirei o danado e funcionou. Agora nao me pergunte pq.

Marcos Roberto.

Re: Apos o desconto eu nao consigo acessar o objeto

Enviado: 15 Mai 2010 13:08
por sygecom
Mas Bah que doidera, quem sabe posta um exemplo completinho que possa somente compilar e que simule o problema para tentarmos achar uma solução na Hwgui para não deixar isso acontecer. Assim o Basso ou outro desenvolvedor pode resolver esse bug ou limitação.

Re: Apos o desconto eu nao consigo acessar o objeto

Enviado: 26 Mai 2010 19:50
por marcos.gurupi
Eh complicado pq veja bem, eu tenho uma tela de venda e tudo funciona normalmente, quando no meio de uma venda eu chamava um dialog com tooltip e voltava para a tela de venda ai o focu ficava doido. Foi soh tirar o tooltip dos dialogs q funcionou q foi uma blz.

Marcos Roberto.

Re: Apos o desconto eu nao consigo acessar o objeto

Enviado: 26 Mai 2010 21:28
por esbasso
veja se na ultima versão do cvs isso ocorre