Caros, permitam que eu dê uma pequena contribuição, mesmo que com atraso:
Parece que o objetivo do colega Rubens era alimentar a variável TOTAL, visto que o usuário já havia digitado a QTDE e o VALOR. Sendo assim, não seria necessário digitar o campo TOTAL. Então eu escreveria o código assim:
Código: Selecionar todos
LOCAL QTDE := .000, DESCRICAO := SPACE(50), VALOR := .00, TOTAL := .00
LOCAL GetList := {}
CLS
@ 10,10 GET QTDE PICT "999.999" VALID QTDE > 0
@ 12,10 GET DESCRICAO PICT "@!"
@ 14,10 GET VALOR PICT "999,999,999.99" VALID VALOR > 0
@ 16,10 GET TOTAL WHEN { |oGet| CalcTotal( oGet, Qtde, Valor ) }
READ
//------------------------------------------------------------------------------
FUNCTION CalcTotal( oGet, Qtde, Valor )
// utiliza métodos do objeto GET
oGet:varPut( Qtde * Valor ) // atualiza a variavel Get
oGet:updateBuffer() // atualiza o buffer do objeto Get (automaticamente executa oGet:display() para atualizar a tela)
RETURN( .F. ) // pula o Get
//------------------------------------------------------------------------------
Isso pode perfeitamente ser usado na cláusula VALID, de acordo com a necessidade.
Obs: é bom evitar usar palavras reservadas do Clipper para nomes de variáveis. Neste código foi declarada a variável TOTAL, que é o nome de um comando Clipper:
TOTAL ON <expKey> FIELDS <idField list>
TO <xcDatabase>
[<scope>] [WHILE <lCondition>] [FOR <lCondition>]
Espero ter contribuido.
AlxSts
[]s
-------------------------------
Nota de Moderação (Toledo): mensagem editada para colocar a tag [ code ]
Veja como utilizar esta tag: faq.php?mode=bbcode#f21