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 ?
Função READEXIT
Moderador: Moderadores
Função READEXIT
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.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Função READEXIT
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.
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.
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: Função READEXIT
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
Abraços.
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.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Re: Função READEXIT
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.
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.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.

