Página 1 de 2
Problema GetSys Alterado
Enviado: 29 Jan 2012 15:00
por janio
Pessoal,
Uso ha muito tempo uso um GetSys.prg alterado que peguei neste fórum que serve para que campos numericos os numeros fluem da direita para a esquerda. Sem problemas.
Ocorre que somente agora fui perceber um problema nesse getsys: quando há no get um numero negativo, nao consigo inserir um numero positivo. Ele sempre reassume o numero como se fosse negativo.
Ja olhei o codigo, mas nao soube identificar onde deve ser corrigido no getsys.prg.
Ajudem-me!
Problema GetSys Alterado
Enviado: 27 Fev 2012 20:51
por Pablo César
Não analisei o código, mas a minha sugestão seria criar uma opção na tela que possa mudar o sinal. Para isto bastaria multiplicar por -1 para alternar o valor negativo para positivo e vice versa. Pode até mesmo acionar tal multiplicação na hora que o usuário digitar "-" ou "+".
Problema GetSys Alterado
Enviado: 12 Jan 2015 16:00
por rubens
Olá Jânio....
Embora o tópico seja muito antigo... está acontecendo o mesmo comigo... você encontrou a solução?
No clipper funciona perfeitamente... daí compilei no harbour e acontece o erro.
Obrigado
Rubens
Problema GetSys Alterado
Enviado: 13 Jan 2015 19:03
por JoséQuintas
Talvez tenha passado desabercebida a resposta do Pablo.
Na digitação do número, o "-" transforma em negativo.
Então é alterar para o "-" inverter o sinal, ou talvez usar a tecla "+".
Pensei em fazer uso da função Abs(), mas a sugestão dele já inverte o sinal de uma vez, multiplicando por -1.
Problema GetSys Alterado
Enviado: 14 Jan 2015 09:31
por rubens
José, debuguei o getsys.prg e quando ele passa nesse trecho
Código: Selecionar todos
// If editing occurred, assign the new value to the variable
IF ( oGet:changed )
oGet:assign()
slUpdated := .T.
ENDIF
da função GetPostValidate( oGet ), ele não muda o valor. Assim imaginemos a variável nNumero1. Você digita -5 nela e pressiona enter para o próximo campo... daí resolve que não é -5 e sim 5. Pressiona seta para cima e volta para a digitação. Daí digita 5 e pressiona enter de novo. Quando sai do get ele volta para o valor -5. Dentro do getsys.prg, debugando é possível verificar que: a variável nNumero1 está com o valor -5 e a propriedade oGet:Buffer está 5, como digitado. Daí o método oGet:assign() deveria atribuir o valor de oGet:Buffer na variável(get) infocus que no momento é o nNumero1. E não está acontecendo. Usando o mesmo getsys.prg no clipper 5.2, funciona perfeitamente.
Daí já não sei como corrigir. Não sei se o método oGet:assign() tem alguma outra dependência para funcionar.
Obrigado
Rubens
getsys.prg usado
Problema GetSys Alterado
Enviado: 14 Jan 2015 18:13
por rubens
Descobri o problema... depois de uns 03 dias. Tô tentando fazer o programa funcionar em modo texto e modo gráfico com a minigui. Daí quando insiro a minigui.lib começa a dar estes erros... removi todos os os includes da minigui e tire a lib da compilação e voltou ao normal. Foi bom porque achei o problema e ruim porque talvez não consiga rodar a minigui junto por causa destes problemas... mas vamos testar para ver o que acontece...
Obrigado
Rubens
Problema GetSys Alterado
Enviado: 08 Dez 2015 16:35
por Mário Isa
conseguiu testar ??
Problema GetSys Alterado
Enviado: 08 Dez 2015 21:33
por lugab
Boa noite, defensores do Impeachment
Aproveito o assunto, pra citar que um dos itens mais procurados aqui no fórum é um GETSYS alterado
com Temporização dos GETS
Alguém, por acaso, debruçou na loucura do GETSYS e produziu um com Temporizador que possa compartilhar ?
Obrigado
Problema GetSys Alterado
Enviado: 08 Dez 2015 22:02
por Mário Isa
Gabriel não entendi o que seria o "temporizador".....
Tempo para quê ? Aguardar que uma tecla seja pressionada.... após pressionada uma tecla aguardar um tempo ??
...............
Problema GetSys Alterado
Enviado: 09 Dez 2015 10:41
por rubens
Bom dia Mário...
Eu não me lembro bem qual foi a solução... mas foi resolvido..
Acredito que com o uso correto do picture.
Dá uma olhada neste tópico
https://pctoledo.org/forum/viewto ... 45&t=16261
Vou anexar o getsys.prg que estou usando para você fazer um teste...
Rubens
Problema GetSys Alterado
Enviado: 09 Dez 2015 14:38
por lugab
Boa tarde, Mário
É pro GET só esperar X minutos pela digtação e, caso ela não tenha ocorrido, o programa executa alguma função ou simplesmente retorna pra tela anterior
Problema GetSys Alterado
Enviado: 09 Dez 2015 14:47
por Mário Isa
eu tambem uso o getsys alterado (por mim)
e num determinado ponto... lá onde espera-se a digitação eu tenho
Código: Selecionar todos
ctazero := ctafoca := cta_ok := cta_get := seconds()
//clear typeahead
do while (o_Local5 == 0)
while .t.
if volta_ao_main
o_local5 := 27
keyboard 27
setlastkey(27)
else
setlastkey(0)
o_Local5=inkey(1) //inkey()
(era inkey() mas eu mudei para inkey(1) porque não quero que ele fique esperando por uma tecla.... ele espera um segundo... senão vai lá e volta no while .t. e vem esperar mais um segundo......
//msginfo('getsys-'+strzero(procline(),10)+'-'+strzero(o_local5,10))
setcursor(3)
end
/*if o_local5 # 0
@ 1,1 say str(mcol(),4)+'-'+str(col(),4)+'-'+str(o_local5,4)+'-'+if(mleftdown(),'a','d')
end*/
depois que ele sai e antes de voltar lá em cima no while .t. ele sai fazendo fárias comparações como essa aqui de baixo e muitas outras.
if o_Local5 == -33
altC()
end
depois de muitas comparações ele faz esta...
if (seconds() - cta_get > 180 ( ou seja 3 minutos....
o_local5 := 27
keyboard 27
setlastkey(27)
cta_get := seconds()
o_local5 se torna := 27 é inserido o caracter 27 como se tivesse dado um enter.... e ele sai do get
end
daí para baixo é dado todo o prosseguimento como se tivesse dado um esc e o getsys faz tudo sozinho..
Problema GetSys Alterado
Enviado: 09 Dez 2015 21:33
por JoséQuintas
E que tal isto?
Código: Selecionar todos
// Apply keystrokes until EXIT
WHILE ( oGet:EXITState == GE_NOEXIT )
nKey := Inkey( 600 )
nKey := iif( nKey == 0, K_ESC, nKey )
//nKey := WaitKey()
GetApplyKey( oGet, nKey, lIsMouse)
ENDDO
Não entendi o fonte do post anterior.
Por acaso isto funciona????
Problema GetSys Alterado
Enviado: 10 Dez 2015 12:59
por alxsts
Olá!
Certamente não. O correto é usar a função CHR() do caracter:
. Eu uso a função com a constante manifesta:
Problema GetSys Alterado
Enviado: 10 Dez 2015 13:15
por Mário Isa
Código: Selecionar todos
keyboard {1,6} //inserindo o Ctrl + Home e o Ctrl + End um seguido do outro
Keyboard 27 //inserindo o esc
Keyboard chr(27) //inserindo o esc
Keyboard {27} //inserindo o esc
Sempre usei essas sintaxes e deram certo.
:)Pos