Função READEXIT

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Função READEXIT

Mensagem por billy1943 »

Eu tenho usado em meus sistemas muitas vezes a função READEXIT, para permitir avançar ou retroceder em uma entrada de dados, e, em muitas rotinas ela funcionou legal.

Agora em um sistema mais recente se teclar SETA PARA CIMA ou SETA PARA BAIXO, o programa as "ignora".

Exemplo simplificado da rotina:
Eu uso matrizes para gravar os seguintes dados, cada uma delas com 100 elementos:
anbco = número dos Bancos
ancheque = número do cheque
adpres = data de apresentação dos cheques
anvalor = valor do cheque
***************************************************
readexit(.t.)
set escape off

do while .t.

@ lin, 6 get anbco pict "999" valid anbco > 0
read

if lastkey() == 24 // rolamento para baixo

i ++

if i > 100
@ 24,0
@ 24,0 say "Limite máximo = 100 cheques"
i --
loop
endif // fim i > 100

if anbco[i-1] == 0
i --
loop
endif // fim anbco[i-1] == 0

lin ++

if lin > 17
lin := 17
scroll(6,6,17,41,1)
endif // fim lin > 17

@ lin,12 get ancheque pict "999999"
@ lin,21 get adapres
@ lin,31 get anvalor pict "@E ###,###.##"
@ lin,42 say i pict "999" color "gr+/b"
clear gets
loop

endif // fim rolamento para baixo

if lastkey() == 05 // rolamento para cima

i --

if i < 1
@ 24,0
@ 24,0 say "J  chegou ao primeiro cheque"
i ++
loop
endif // fim i < 1

lin --

if lin < 6
lin := 6
scroll(6,6,17,41,-1)
endif // fim lin < 6

@ lin,12 get ancheque pict "999999"
@ lin,21 get adapres
@ lin,31 get anvalor pict "@E ###,###.##"
@ lin,42 say i pict "999" color "gr+/b"
clear gets
loop

endif // fim rolamento para cima

....

***********************************************
O que pode causar que o sistema ignore as teclas Seta para cima e Seta para Baixo no READ em questão ?
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 do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Função READEXIT

Mensagem por Pablo César »

Não lembro agora o por quê eu não edito elementos de matrizes ou vetores de dentro de um @ GET...

Não conseguí entender muito a necessidade de sair do GET... mas sugiro utilizar TBROWSE de matriz, talvez seja bem mais simples mais seguro e mais estético quanto a apresentação dos dados na tela. A exibição do TBROWSE pode ser acionada por uma tecla de função.
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 do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Re: Função READEXIT

Mensagem por ANDRIL »

Amigo, muito provavel que o seu valid esta anulando a função READEXIT, pois o valid impõe uma condição, se vc preencher o valor com um numero e apertar seta para cima/baixo deve funcionar, agora se tiver zerado nao.

Retire o valid e coloque a condição em IF. Veja

Código: Selecionar todos

@ lin, 6 get anbco[i] pict "999" 
read
if anbco[i]<=0 
loop
endif
*-- aqui segue normal o seu codigo de IFs.
Abraços.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Re: Função READEXIT

Mensagem por billy1943 »

O nosso colega Andril "matou" a charada.

Realmente, era o valid que perdia o valor de lastkey(), e bastou mudar de lugar para dar certo.

Obrigado.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Responder