Página 1 de 2
Pular o get
Enviado: 02 Abr 2006 19:10
por Josmar dos Santos
Ola pessoal, gostaria que voces observassem essa rotina
FUNCTION IFU03011
IF VALIDA = NIL; VALIDA := .T.; ENDIF
M->SALDO_REC := M->VALOR_REC-M->PAGO_REC
@ 14, 23 SAY M->SALDO_REC PICT "@Z 999,999,999.99"
RETURN .T.
@ 14, 23 GET M->SALDO_REC PICTURE "@Z 999,999,999.99" VALID IFU03011()
E o seguinte: Essa rotina pelo que voces podem observar faz a subtração da variavel saldo_rec. O que estou querendo e que ele continue a fazer o mesmo como uma condição, que ele não acesse o get . Eu coloquei say no lugar de get, mas nao aceita a declaração da função....tem algum jeito de ele continuar fazendo o mesmo procedimento, mas sem acessar o saldo_rec e registrar normalmente na dbu....
sem mais grato
josmar
Enviado: 02 Abr 2006 20:07
por evaldo
Éssa funcao IFU03011(), vc tem que colocar ela em outro lugar para que a soma seja feita Ex.
Código: Selecionar todos
@ 13, 23 GET M->VALOR_REC PICTURE "@E 999,999.99" VALID IFU03011()
READ
FUNCTION IFU03011()
IF VALIDA = NIL; VALIDA := .T.; ENDIF
M->SALDO_REC := M->VALOR_REC-M->PAGO_REC
@ 14, 23 SAY M->SALDO_REC PICT "@Z 999,999,999.99"
RETURN .T.
Assim quando vc acabar de digitar o valor recebido, a funcao ja vai somar e dar o total recebido.
OK
Enviado: 03 Abr 2006 10:28
por alaminojunior
Bom dia, não sei se entendi muito bem o que vc quer fazer, mas...
Vc quer que a variavel M->valor_rec do get já contenha o valor calculado ?
Caso seja isso, é só trocar a clausula Valid pela When, e toda vez que vc entrar neste get, ele já vai trazer o valor calculado.
Desculpe se entendi errado.
Pular o get
Enviado: 03 Abr 2006 13:32
por Josmar dos Santos
Ola coelgas, desculpa...acho que nao expliquei direito...
Com essa função, ele faz o calculo e joga certinho na variavel saldo_rec...sem problema, não ha necessidade de digitar o valor nesse variavel, pois a funçao faz isso.
Mas o que relamente estou pretendendo é que o cursor não acesse essa variável, ou seja, a hora que for digitado o primeiro valor(valor_rec), e a funçao jogar o valor no saldo_rec, ele pule esse variavel...enfim, resumindo queria aprender a pular uma variavel...sem
mais obrigado a todos pela atençao
josmar
Enviado: 03 Abr 2006 14:10
por Daniel
vc pode jogar junto com o retorno da variavel um
keyboard chr(13)
Código: Selecionar todos
FUNCTION IFU03011()
IF VALIDA = NIL; VALIDA := .T.; ENDIF
M->SALDO_REC := M->VALOR_REC-M->PAGO_REC
@ 14, 23 SAY M->SALDO_REC PICT "@Z 999,999,999.99"
KeyBoard Chr(13)
RETURN .T.
Enviado: 03 Abr 2006 18:28
por filizola
@ lin,col get valor_rec pict "@ez 99,999.99" valid(IFU03011(valor_rec,@saldo_rec))
function ifu03011(valor_rec_f, saldo_rec_f)
saldo_rec_f=saldo_rec_f-valor_rec_f
@ lin,col say saldo_rec_f pict "@ez 99,999.99"
return(.t.)
Pular o get
Enviado: 05 Abr 2006 14:50
por Josmar dos Santos
Ola galera, blz....antes de mais nada orbrigado pela força e atençao de voces. Eu testei todas as rotinas que vocês me passaro e nem uma deu resultado....Se alguem tiver outra sugestão eu agradeço.
Eu estava pensando em criar uma variável de memória e jogar o resultado dela nessa varável (sado_rec) dbu...será que tem jeito de fazer isso ?Se der para fazer isso posso colocar o "say" no lugar do get...ai não precisa mais da função. Isso porque o resultado da funcçao poderá ser jogado na variavel de memoria e o resultado do mesmo na variavel saldo_rec.....sem mais grato
josmar
Enviado: 05 Abr 2006 15:24
por Daniel
tenta assim
Código: Selecionar todos
@ 11, 23 GET M->HIST_REC PICTURE "@!"
@ 11, 56 GET M->PAGTO_REC
@ 14, 7 GET M->PAGO_REC PICTURE "@Z 999,999,999.99" Valid IFU03011()
-> o calculo e feito aqui !
@ 14, 23 Say M->SALDO_REC PICTURE "@Z 999,999,999.99" COLOR CONTECOR[ 8 ]
// -> Funcao que faz calculo com campos numericos
M->SALDO_REC := M->VALOR_REC-M->PAGO_REC
@ 14, 23 SAY M->SALDO_REC PICT "@Z 999,999,999.99" COLOR CONTECOR[ 8 ]
RETURN .T.
Enviado: 06 Abr 2006 19:11
por C Leonam
Olá
Vamos ver, o que vc quer é saltar o GET mas que sejam feitos os processamentos desejados, certo?
Então porque não usar a cláusula WHEN para isso. Veja abaixo:
Código: Selecionar todos
@ 14, 23 GET M->SALDO_REC PICTURE "@Z 999,999,999.99" WHEN DesligaGET("IFU03011()")
-----------------------------------------------------------------
#INCLUDE "INKEY.CH"
FUNCTION DesligaGET(bProcessos)
LOCAL lVolta := .T.
IF bProcessos=NIL
bProcessos := {||.T.}
ELSEIF VALTYPE(bProcessos)='C'
bProcessos := &"{||"+ALLTRIM(bProcessos)+"}"
ENDIF
// Executa a sua função
EVAL(bProcessos)
// Simulação das teclas de entrada no GET para forçar a saida
IF LASTKEY()==K_DOWN
__KEYBOARD(CHR(K_DOWN))
ELSEIF LASTKEY()==K_UP
__KEYBOARD(CHR(K_UP))
ELSE
__KEYBOARD(CHR(K_ENTER))
ENDIF
RETURN lVolta
Na função DesligaGET é passado no parâmetro "bProcessos" (como TEXTO ou CODEBLOCK) a sua função, se não passar nada apenas o GET não vai permitir edição.
Ah! Lembre que as variáveis deverão ser PRIVATE para serem vistas na função. Ou se vc desejar pode passa-las como parâmetros também, é só modificar a função DesligaGET
:xau
Enviado: 06 Abr 2006 19:28
por Augusto
E se vc der um "READ" após o último GET antes desse e esse passar a ser um SAY ??
Falei besteira ??
Enviado: 06 Abr 2006 19:52
por MARCELOG
Caro Josmar,
só não entendi por que gastar um get com isso?
Todavia, veja isto:
cls
a:=1
b:=2
c:=space(6)
d:=3
@ 10,2 get a
@ 12,2 get b;
valid {||c:=a+b,.t.}
@ 14,2 get c;
when {|n|Imprime(n)} //Retornando .F. nunca vai ter o foco
@ 16,2 get d
Read
function Imprime(n)
n:Display()
Return .f.
Espero ter ajudado
MarceloG
Enviado: 06 Abr 2006 20:02
por MARCELOG
Apenas para entender a dica anterior:
Toda vez que você sair do get b a cláusula valid vai ser avaliada e igualar a variável c à soma de get a + get b.
A cláusula valid do get b termina com .t. para sempre permitir a saída do mesmo.
Quando o foco é transferido para o get c a cláusula when é avaliada.
Então a gente pede para o programa exibir (display) o conteúdo da variável c (get c) e retorna .f.
Como c é igual a a+b, o resultado é exibido.
Retornando .f. a cláusula when não é satisfeita, então o programa vai para o get seguinte ou fica no mesmo get.
When é condição de entrada
Valid é condição de saída
Sacou!?
Beleza então!
A
Enviado: 07 Abr 2006 10:35
por digitom
Tenta assim:
FUNCTION IFU03011
IF VALIDA = NIL
VALIDA := .T.
ENDIF
CLEAR GETS
M->SALDO_REC := M->VALOR_REC-M->PAGO_REC
@ 14, 23 SAY M->SALDO_REC PICT "@Z 999,999,999.99"
RETURN .T.
@ 14, 23 GET M->SALDO_REC PICTURE "@Z 999,999,999.99" VALID IFU03011()
Caso não tenha nenhum outro GET isso vai funcionar.
Pular o get
Enviado: 08 Abr 2006 15:40
por Josmar dos Santos
Ola C Leonam.....blz, estou tentando testar a sua rotina que vc me mandou. Gostaria de saber porque esta dando erro de syntax nessa rotina -->bProcessos := &"{||"+Alltrim(bProcessos)+"}"...o erro que ocorre e esse: '{||'...eu ja mexi em tudo e não consegui arrumar...
Obrigado por enquanto...
valew
josmar
Enviado: 08 Abr 2006 22:14
por marbio
Boa Noite.
Eu acho que nao entendi sua pergunta mais vai um teste. certo
clear
x1=0
x2=0
x3=0
x4=0
@01,01 say 'Sub Total R$ ' get x4 pict '@e 999.99'
@02,01 say 'Desconto.... ' get x1 pict '@E 999.99' valid calculo()
@03,01 say 'Total........'
@04,01 say 'teste ' get x2 pict '@E 999.99'
read
function calculo()
xtotal=x4-x1
@03,01 say 'Total........' +transf(xtotal,'@E 999.99')
return .t.
t+