Página 1 de 1

Cláusula VALID. Conteúdo da variável só com ValToPrg() ?

Enviado: 04 Jun 2010 21:13
por alaminojunior
Boa noite.
Estou mudando uma rotina que eu tenho escrita em modo texto para modo gráfico, mas estou perdido numa coisa.

Montei a janela com a Designer contendo vários get´s, e para alguns eu preciso usar a cláusula VALID. Porém como no exemplo abaixo, o conteúdo da variável que eu passo na função Desconto() só fica visível se usar a ValToPrg().
É uma janela do PDV onde vou registrando os valores dos recebimentos e suas formas (cheque, dinheiro, TEF, etc ...)
É assim mesmo e ponto, ou existe uma maneira de passar as variáveis normalmente como estamos acostumados no Clipper e xHarbour ?

O que eu preciso na verdade é:
Ao digitar o valor de desconto, a cláusula VALID fazer com que seja feito um cálculo, para que seja alterado o valor dos get´s seguintes. Mas tá difícil.

O código:

Código: Selecionar todos

#include "hwgui.ch"

FUNCTION recebimento( p1, p2, p3, p4 )
Public vEdit1 := 0, vEdit2 := 0, vEdit3 := 250, vEdit4 := 0, vEdit5:= 250
Public oEdit1, oEdit2, oLabel2, oLabel3, oLabel1, oLabel4, oGroup1 ;
       , oEdit3, oLabel5, oEdit4, oLabel6, oEdit5

  INIT DIALOG oDlg TITLE "Tela de Recebimento" ;
    AT 389,144 SIZE 527,412 ;
        FONT HFont():Add( 'Verdana',0,-13,400,,,) CLIPPER  NOEXIT  ;
        STYLE WS_POPUP+WS_CAPTION+WS_SYSMENU+WS_SIZEBOX+DS_CENTER 
        Thisform := oDlg
    
   SetColorInFocus(.t.)

   @ 175,12 SAY oLabel1 CAPTION "Recebimento"  SIZE 159,29 ;
        STYLE SS_CENTER    ;
        FONT HFont():Add( 'Verdana',0,-21,700,,255,)

   @ 15,45 GROUPBOX oGroup1 CAPTION "" SIZE 495,355   

   @ 29,115 SAY oLabel2 CAPTION "Desconto" SIZE 80,19   
   @ 29,275 SAY oLabel3 CAPTION "Recebido" SIZE 80,19   
   @ 29, 55 SAY oLabel4 CAPTION "Valor total" SIZE 80,19   
   @ 29,335 SAY oLabel5 CAPTION "Ainda falta" SIZE 80,19   
	@ 29,175 SAY oLabel6 CAPTION "Líquido" SIZE 80,19

   @ 29,75 GET oEdit3 VAR vEdit3 SIZE 150,35 ;
        STYLE ES_RIGHT +WS_DLGFRAME +WS_DISABLED PICTURE '@e 999,999.99'     ;
        FONT HFont():Add( '',0,-19,400,,,)

   @ 29,135 GET oEdit1 VAR vEdit1 SIZE 150,35 ;
        STYLE ES_RIGHT +WS_DLGFRAME MAXLENGTH 10   ;
        PICTURE '@e 999,999.99' ;
        VALID {|| desconto(vEdit1)};
        FONT HFont():Add( '',0,-19,400,,,); 
        TOOLTIP 'Digite o valor do desconto'

   @ 29,195 GET oEdit5 VAR vEdit5 SIZE 150,35 ;
        STYLE ES_RIGHT +WS_DLGFRAME +WS_DISABLED MAXLENGTH 10   ;
        PICTURE '@e 999,999.99' ;
        FONT HFont():Add( '',0,-19,400,,,); 
        TOOLTIP 'Valor líquido'

   @ 29,295 GET oEdit2 VAR vEdit2 SIZE 150,35 ;
        STYLE ES_RIGHT +WS_DLGFRAME MAXLENGTH 10   ;
        PICTURE '@e 999,999.99' ;
        FONT HFont():Add( '',0,-19,400,,,); 
        TOOLTIP 'Digite o valor recebido'

   @ 29,355 GET oEdit4 VAR vEdit4 SIZE 150,35 ;
        STYLE ES_RIGHT +WS_DLGFRAME +WS_DISABLED ;
        BACKCOLOR 8421631 PICTURE '@e 999,999.99' MAXLENGTH 10   ;
        FONT HFont():Add( '',0,-19,400,,,); 
        TOOLTIP 'Valor restante para finalizar pagamento'
   
	ACTIVATE DIALOG oDlg 

RETURN oDlg:lresult       

Function desconto(arg)
msginfo(arg)
return .t.
Aceito outras sugestões de como realizar a mesma tarefa no caso em questão.

Re: Cláusula VALID. Conteúdo da variável só com ValToPrg() ?

Enviado: 04 Jun 2010 23:55
por alxsts
Olá!

Alamino:

é um chute... mas, tente passar a variável como parâmetro para o code block

Código: Selecionar todos

{ | vEdit1 | desconto( vEdit1 ) }
.

Re: Cláusula VALID. Conteúdo da variável só com ValToPrg() ?

Enviado: 05 Jun 2010 02:27
por sygecom
Acabei mandando a resposta para seu e-mail, mas para constar aqui:

Na verdade o MSGINFO() não visualiza variáveis numérica, então terá que usar MSGINFO(STR(vEdit1))

Re: Cláusula VALID. Conteúdo da variável só com ValToPrg() ?

Enviado: 05 Jun 2010 12:21
por alaminojunior
Ahhhhh, então agora tô em casa.
Quer dizer que o conteúdo, tipo e valor da variável permanece. Eu achei que acontecia alguma magia que fizesse com que a variável ficasse "invisível".
Muito bom.
Agora fica fácil fazer as estripulias.

Obrigado aos amigos pela luz.