Clipper On Line • Ver Tópico - Evitar sair do read com pgdn

Evitar sair do read com pgdn

Discussão sobre a linguagem CA-Clipper.

Moderador: Moderadores

 

Evitar sair do read com pgdn

Mensagempor rubens » 15 Nov 2010 16:21

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
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

Evitar sair do read com pgdn

Mensagempor Pablo César » 15 Nov 2010 18:12

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.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Re: Evitar sair do read com pgdn

Mensagempor billy1943 » 15 Nov 2010 20:36

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:

#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
Nota de Moderação:
Toledo: Mensagem editada para colocar a tag [ code ]
Veja como utilizar esta tag: Clique aqui
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Avatar de usuário

billy1943
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 570
Data de registro: 12 Mai 2009 17:33
Cidade/Estado: Bauru-SP
Curtiu: 1 vez
Mens.Curtidas: 21 vezes

Re: Evitar sair do read com pgdn

Mensagempor ANDRIL » 16 Nov 2010 10:58

Se for apenas o PGUP e o PGDN, tente assim:

@ 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


Abraços!
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1270
Data de registro: 06 Jul 2004 00:44
Curtiu: 12 vezes
Mens.Curtidas: 46 vezes

Re: Evitar sair do read com pgdn

Mensagempor Maligno » 16 Nov 2010 11:31

Talvez seja mais prático utilizar:

#include "inkey.ch"

set key K_PGUP to FctVoid
set key K_PGDN to FctVoid

//
//  Código do @...say...get
//

function FctVoid()
return nil


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.
[]'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!
Avatar de usuário

Maligno
Membro Master

Membro Master
 
Mensagens: 6390
Data de registro: 06 Jul 2004 01:40
Cidade/Estado: Londrina/PR
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Re: Evitar sair do read com pgdn

Mensagempor rubens » 16 Nov 2010 11:50

Vejam o código abaixo...

@ 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


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
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

Re: Evitar sair do read com pgdn

Mensagempor Maligno » 16 Nov 2010 12:57

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!
Avatar de usuário

Maligno
Membro Master

Membro Master
 
Mensagens: 6390
Data de registro: 06 Jul 2004 01:40
Cidade/Estado: Londrina/PR
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Re: Evitar sair do read com pgdn

Mensagempor JoséQuintas » 16 Nov 2010 13:01

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Re: Evitar sair do read com pgdn

Mensagempor Maligno » 16 Nov 2010 13:08

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.
[]'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!
Avatar de usuário

Maligno
Membro Master

Membro Master
 
Mensagens: 6390
Data de registro: 06 Jul 2004 01:40
Cidade/Estado: Londrina/PR
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Re: Evitar sair do read com pgdn

Mensagempor ANDRIL » 16 Nov 2010 16:19

Rubens, o código que eu postei não resolveu???

Faça assim:

@ 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


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
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1270
Data de registro: 06 Jul 2004 00:44
Curtiu: 12 vezes
Mens.Curtidas: 46 vezes

Re: Evitar sair do read com pgdn

Mensagempor JoséQuintas » 16 Nov 2010 18:29

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Re: Evitar sair do read com pgdn

Mensagempor rubens » 16 Nov 2010 21:14

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
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

Evitar sair do read com pgdn

Mensagempor deividdjs » 02 Mai 2021 17:48

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 ..
Windows 11 + Harbour 3.2 + Visual Lib + GTWVG
Avatar de usuário

deividdjs
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 245
Data de registro: 19 Set 2006 09:39
Cidade/Estado: Foz do Iguaçu / Pr
Curtiu: 81 vezes
Mens.Curtidas: 8 vezes

Evitar sair do read com pgdn

Mensagempor JoséQuintas » 02 Mai 2021 17:51

Só remover o desvio.

SET KEY K_PGDN TO
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Evitar sair do read com pgdn

Mensagempor deividdjs » 03 Mai 2021 08:21

JoséQuintas escreveu:Só remover o desvio.

SET KEY K_PGDN TO


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 .. .

Forte abraço amigo !!!
Nota de Moderação:
Itamar M. Lins Jr.: Mensagem editada para formatação de texto em letras minúsculas. Evite postar mensagens com texto TOTALMENTE EM LETRAS MAIÚSCULAS.
Veja as Regras do Fórum:
7 - Mensagens em letras MAIÚSCULAS poderão ser editadas sem aviso prévio.
Windows 11 + Harbour 3.2 + Visual Lib + GTWVG
Avatar de usuário

deividdjs
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 245
Data de registro: 19 Set 2006 09:39
Cidade/Estado: Foz do Iguaçu / Pr
Curtiu: 81 vezes
Mens.Curtidas: 8 vezes




Retornar para CA-Clipper

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro