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
GETSYS.PRG
(27.19 KiB) Baixado 269 vezes

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...
GETSYS.PRG
(27.17 KiB) Baixado 320 vezes
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????

Código: Selecionar todos

 keyboard 27

Problema GetSys Alterado

Enviado: 10 Dez 2015 12:59
por alxsts
Olá!

Certamente não. O correto é usar a função CHR() do caracter:

Código: Selecionar todos

KEYBOARD CHR( 27 )
. Eu uso a função com a constante manifesta:

Código: Selecionar todos

__Keyboard( Chr( K_ESC ) )

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