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

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

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

Mensagem 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.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

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

Mensagem 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 ) }
.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

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

Mensagem 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))
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

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

Mensagem 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.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Responder