Evitar sair do read com pgdn
Moderador: Moderadores
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Evitar sair do read com pgdn
Olá.. pessoal pesquisei e não encontrei nada parecido com isso..
Tentei usar SET CONFIRM ON no iníco da Rotina e SET CONFIRM OFF no final e não deu certo... o meu problema tá no final do orçamento, onde tem os campos
SUBTOTAL
DESCONTO
TOTAL
O Total é calculado conforme o desconto digitado, daí se o usuario pressiona pgdn no subtotal ele pula o resto independente dos valid e when que exista nos gets do desconto e subtotal...
Grato...
Rubens
Tentei usar SET CONFIRM ON no iníco da Rotina e SET CONFIRM OFF no final e não deu certo... o meu problema tá no final do orçamento, onde tem os campos
SUBTOTAL
DESCONTO
TOTAL
O Total é calculado conforme o desconto digitado, daí se o usuario pressiona pgdn no subtotal ele pula o resto independente dos valid e when que exista nos gets do desconto e subtotal...
Grato...
Rubens
"Eu e minha casa servimos ao Senhor e você
"
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Evitar sair do read com pgdn
Rubens, mostre seu código fonte. Não adianta fornecer uma sugestão e não funcionar com o que você tem.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Re: Evitar sair do read com pgdn
Ignorar a tecla é fácil.
Como sabemos, o valor da tecla "PgDn" quando pressiona retorna o valor 3, e a "PgUp" retorna 18, e assim por diante.
Tente:
Como sabemos, o valor da tecla "PgDn" quando pressiona retorna o valor 3, e a "PgUp" retorna 18, e assim por diante.
Tente:
Código: Selecionar todos
#include "inkey.ch" // todos os valores de teclas
....
do while .t.
@ y,m say "LLLLLLLLL" get xb
@ y,n say "QQQQQQQQ" get xc
@ x,y say "MMMMMM" get xr
read
nkey := lastkey() // obtem o valor da última tecla
if nkey == K_UP .or. nkey == K_DOWN .or. nkey == K_PGUP .or. nkey == K_PGDN // checa a última tecla
keyboard (chr(nkey))
loop
endif
segue o programa sabendo que as teclas não finalizaram o READ
.....
enddo
Editado pela última vez por Toledo em 16 Nov 2010 08:25, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Re: Evitar sair do read com pgdn
Se for apenas o PGUP e o PGDN, tente assim:
Abraços!
Código: Selecionar todos
@ y,m say "LLLLLLLLL" get xb valid LastKey()#18.and.Lastkey()#3
@ y,n say "QQQQQQQQ" get xc valid LastKey()#18.and.Lastkey()#3
@ x,y say "MMMMMM" get xr valid LastKey()#18.and.Lastkey()#3
read
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Re: Evitar sair do read com pgdn
Talvez seja mais prático utilizar:
Que pode ser global, inclusive.
Se é que foi isso realmente o que o OP perguntou, porque eu não entendi exatamente qual é o problema. Como ele não se manifestou mais, ficou meio no ar.
Código: Selecionar todos
#include "inkey.ch"
set key K_PGUP to FctVoid
set key K_PGDN to FctVoid
//
// Código do @...say...get
//
function FctVoid()
return nilSe é que foi isso realmente o que o OP perguntou, porque eu não entendi exatamente qual é o problema. Como ele não se manifestou mais, ficou meio no ar.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Re: Evitar sair do read com pgdn
Vejam o código abaixo...
Quando o foco fica no get cCODCOND se o usuário pressionar pgdn sai do read, deixando de ler os outros 03 gets abaixo... daí o nTOTAL fica zerado (0.00), e não executa as funções dentro dos valid e when...
Precisava obrigar o usuário a pressionar enter e passar dentro de cada get...
Rubens
Código: Selecionar todos
@ 21,05 SAY "CONDICAO PGTO:" GET cCODCOND PICT "@K999" VALID PESQCOND( @cCODCOND ) .AND. !EMPTY(cCODCOND) .AND. MUDAPRECO() WHEN cCODIGO !="000001"
@ 22,47 GET nDESC_P PICT "999.99" VALID CALCPOR( @nDESCONTO )
@ 22,68 GET nDESCONTO PICT P12 VALID CALCVEN( @nTOTAL )
@ 23,68 GET nTOTAL PICT P12 VALID nTOTAL!=0.00 .AND. VERDESC( @nDESC_P, @nTOTAL, @nDESCONTO )
READ
Precisava obrigar o usuário a pressionar enter e passar dentro de cada get...
Rubens
"Eu e minha casa servimos ao Senhor e você
"
Re: Evitar sair do read com pgdn
Então parece que o problema realmente está em anular as teclas PgDn e PgUp. Se for isso, então já tem as respostas.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Re: Evitar sair do read com pgdn
Se for fazer isso em todo sistema, melhor alterar a GETSYS, que controla todos os GETs.
Outra opção seria um READ independente da primeira variável.
Outra opção seria um READ independente da primeira variável.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Re: Evitar sair do read com pgdn
Pensei no GETSYS, mas há quem não goste de alterá-lo. Até porque, são apenas duas linhas de código. A solução pelo SET KEY é mais simples e rápida.
Um READ isolado para a primeira variável funcionaria, mas se eventualmente for necessário um retorno a este campo, seria necessário um controle extra, mais trabalhoso.
Um READ isolado para a primeira variável funcionaria, mas se eventualmente for necessário um retorno a este campo, seria necessário um controle extra, mais trabalhoso.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Re: Evitar sair do read com pgdn
Rubens, o código que eu postei não resolveu???
Faça assim:
Aparentemente, acho que as teclas PGUP e PGDN serão bloqueadas. Faça ai o teste e nos de um retorno. Creio que como se trata de uso apenas nesta linha, não há necessidade de uma alteração no GETSYS.
Abraços
Faça assim:
Código: Selecionar todos
@ 21,05 SAY "CONDICAO PGTO:" GET cCODCOND PICT "@K999" VALID PESQCOND( @cCODCOND ) .AND. !EMPTY(cCODCOND) .AND. MUDAPRECO() .AND. LASTKEY()#18 .AND. LASTKEY()#3 WHEN cCODIGO !="000001
Abraços
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Re: Evitar sair do read com pgdn
Pera lá...
Fiz um teste aqui, e pgdn não abandona o get sem fazer o valid.
Na prática ele pula os outros gets.
Será que seria interessante mexer um pouquinho na lógica?
Algo do tipo....
@ 1, 1 get mvar1 valid CalculaTudo(@mvar1,@mvar2,@mvar3,@mvar4)
@ 2, 1 get mVar2 valid CalculaTudo(@mvar1,@mvar2,@mvar3,@mvar4) When .f.
@ 3, 1 get mVar3 valid CalculaTudo(@mvar1,@mvar2,@mvar3,@mvar4)
@ 4, 1 get mVar4 valid CalculaTudo(@mvar1,@mvar2,@mvar3,@mvar4)
read
Outra coisa:
Se compilar com ou sem o /z, pode ter resultados diferentes.
A otimização de expressões omite parte da lista.
tipo... if condicao1 .and. condicao2
Se estiver otimizado, se condição 1 for falsa, nem executa a condição 2.
Se a função em condicao2 fizer o cálculo, nem vai ser executada.
Fiz um teste aqui, e pgdn não abandona o get sem fazer o valid.
Na prática ele pula os outros gets.
Será que seria interessante mexer um pouquinho na lógica?
Algo do tipo....
@ 1, 1 get mvar1 valid CalculaTudo(@mvar1,@mvar2,@mvar3,@mvar4)
@ 2, 1 get mVar2 valid CalculaTudo(@mvar1,@mvar2,@mvar3,@mvar4) When .f.
@ 3, 1 get mVar3 valid CalculaTudo(@mvar1,@mvar2,@mvar3,@mvar4)
@ 4, 1 get mVar4 valid CalculaTudo(@mvar1,@mvar2,@mvar3,@mvar4)
read
Outra coisa:
Se compilar com ou sem o /z, pode ter resultados diferentes.
A otimização de expressões omite parte da lista.
tipo... if condicao1 .and. condicao2
Se estiver otimizado, se condição 1 for falsa, nem executa a condição 2.
Se a função em condicao2 fizer o cálculo, nem vai ser executada.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Re: Evitar sair do read com pgdn
Pessoal seguinte:
O Andril está certo... o exemplo dele funcionou, só que daí teria que colocar a validação em todos os gets, para esse bloco de código não teria problema...
A sugestão do José Quintas, também já tinha pensado, mas até o momento que o cliente escolhe a condição ainda não tinha dados os suficiente para fazer cálculo do desconto em % ou valor.. (pelo menos o que entendi) e desmembrar os gets não daria porque se hora de fechar a venda o cliente optasse por mudar a forma de pagamento, não dava para voltar no read anterior...
A melhor forma de resolver ao meu modo de ver foi o que o Maligno expôs, até aproveitei e crir uma função para habilitar/desabilitar a pgdn e pgup, o que pode ser incrementado para outras teclas...
Valeu pessoal... obrigado a todos...
Rubens
O Andril está certo... o exemplo dele funcionou, só que daí teria que colocar a validação em todos os gets, para esse bloco de código não teria problema...
A sugestão do José Quintas, também já tinha pensado, mas até o momento que o cliente escolhe a condição ainda não tinha dados os suficiente para fazer cálculo do desconto em % ou valor.. (pelo menos o que entendi) e desmembrar os gets não daria porque se hora de fechar a venda o cliente optasse por mudar a forma de pagamento, não dava para voltar no read anterior...
A melhor forma de resolver ao meu modo de ver foi o que o Maligno expôs, até aproveitei e crir uma função para habilitar/desabilitar a pgdn e pgup, o que pode ser incrementado para outras teclas...
Valeu pessoal... obrigado a todos...
Rubens
"Eu e minha casa servimos ao Senhor e você
"
- deividdjs
- Usuário Nível 3

- Mensagens: 377
- Registrado em: 19 Set 2006 09:39
- Localização: Foz do Iguaçu / Pr
Evitar sair do read com pgdn
NO EXEMPLO DO MALIGNO
COMO EU FAÇO PARA ATIVAR NOVAMENTE AS TECLAS QUANDO SAIO DA FUNÇÃO ... PORQUE TESTEI AQUI ELE DESABILITA EM TODO O SISTEMA DEPOIS QUE SAIO DA FUNÇÃO Q UTILIZEI O set key K_PGUP to FctVoid E set key K_PGDN to FctVoid ..
COMO EU FAÇO PARA ATIVAR NOVAMENTE AS TECLAS QUANDO SAIO DA FUNÇÃO ... PORQUE TESTEI AQUI ELE DESABILITA EM TODO O SISTEMA DEPOIS QUE SAIO DA FUNÇÃO Q UTILIZEI O set key K_PGUP to FctVoid E set key K_PGDN to FctVoid ..
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Evitar sair do read com pgdn
Só remover o desvio.
Código: Selecionar todos
SET KEY K_PGDN TO
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- deividdjs
- Usuário Nível 3

- Mensagens: 377
- Registrado em: 19 Set 2006 09:39
- Localização: Foz do Iguaçu / Pr
Evitar sair do read com pgdn
Obrigado Jose ... Eu pensei um pouquinho depois q mandei a mensagem e fiz justamente isso .. hehehe estou meio enferrujado .. Voltei a programar em xHarbour novamente... uma aplicação antiga .. .JoséQuintas escreveu:Só remover o desvio.
Código: Selecionar todos
SET KEY K_PGDN TO
Forte abraço amigo !!!
Editado pela última vez por Itamar M. Lins Jr. em 03 Mai 2021 08:40, em um total de 1 vez.
Razão: Mensagem editada para formatação de texto em letras minúsculas. Evite postar mensagens com texto TOTALMENTE EM LETRAS MAIÚSCULAS.<br>Veja as Regras do Fórum:<br>7 - Mensagens em letras MAIÚSCULAS poderão ser editadas sem aviso prévio.
Razão: Mensagem editada para formatação de texto em letras minúsculas. Evite postar mensagens com texto TOTALMENTE EM LETRAS MAIÚSCULAS.<br>Veja as Regras do Fórum:<br>7 - Mensagens em letras MAIÚSCULAS poderão ser editadas sem aviso prévio.
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX


