Pular o get
Moderador: Moderadores
-
Josmar dos Santos
- Usuário Nível 3

- Mensagens: 277
- Registrado em: 11 Jan 2006 18:36
- Localização: Botucatu-SP
Pular o get
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
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
Éssa funcao IFU03011(), vc tem que colocar ela em outro lugar para que a soma seja feita Ex.
OK
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.- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
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.
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.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
MySQL c/ SQLRDD
HwGui + GTWVG
-
Josmar dos Santos
- Usuário Nível 3

- Mensagens: 277
- Registrado em: 11 Jan 2006 18:36
- Localização: Botucatu-SP
Pular o get
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
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
vc pode jogar junto com o retorno da variavel um
keyboard chr(13)
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.Daniel
Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
-
Josmar dos Santos
- Usuário Nível 3

- Mensagens: 277
- Registrado em: 11 Jan 2006 18:36
- Localização: Botucatu-SP
Pular o get
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
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
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.
Daniel
Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
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:
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
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
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
Clp52e, Blinker 5.1
- Augusto
- Usuário Nível 3

- Mensagens: 473
- Registrado em: 26 Ago 2003 17:50
- Localização: Maricá/RJ
- Contato:
E se vc der um "READ" após o último GET antes desse e esse passar a ser um SAY ??
Falei besteira ??
Falei besteira ??
:xau Fui...
goulart@provsul.com.br
Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
goulart@provsul.com.br
Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
-
MARCELOG
- Usuário Nível 4

- Mensagens: 546
- Registrado em: 15 Mar 2005 16:54
- Localização: Divinópolis/MG
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
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
-
MARCELOG
- Usuário Nível 4

- Mensagens: 546
- Registrado em: 15 Mar 2005 16:54
- Localização: Divinópolis/MG
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
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
- digitom
- Usuário Nível 2

- Mensagens: 93
- Registrado em: 06 Abr 2006 13:52
- Localização: Anápolis-Go
- Contato:
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.
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.
Fui 
-
Josmar dos Santos
- Usuário Nível 3

- Mensagens: 277
- Registrado em: 11 Jan 2006 18:36
- Localização: Botucatu-SP
Pular o get
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
Obrigado por enquanto...
valew
josmar
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+
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+
Sempre há uma solucao para os nossos problema clipper.....
