Problema GetSys Alterado

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Problema GetSys Alterado

Mensagem 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!
Anexos
getsys.prg
(31.66 KiB) Baixado 464 vezes
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
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á

Problema GetSys Alterado

Mensagem 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 "+".
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
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Problema GetSys Alterado

Mensagem 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
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

Problema GetSys Alterado

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"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 do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Problema GetSys Alterado

Mensagem 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 273 vezes
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Problema GetSys Alterado

Mensagem 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
"Eu e minha casa servimos ao Senhor e você ???"
Mário Isa
Usuário Nível 4
Usuário Nível 4
Mensagens: 907
Registrado em: 07 Jul 2004 13:54
Localização: Ilha Solteira-sp

Problema GetSys Alterado

Mensagem por Mário Isa »

conseguiu testar ??
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Problema GetSys Alterado

Mensagem 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
lugab
Mário Isa
Usuário Nível 4
Usuário Nível 4
Mensagens: 907
Registrado em: 07 Jul 2004 13:54
Localização: Ilha Solteira-sp

Problema GetSys Alterado

Mensagem 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 ??


...............
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Problema GetSys Alterado

Mensagem 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 323 vezes
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Problema GetSys Alterado

Mensagem 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
lugab
Mário Isa
Usuário Nível 4
Usuário Nível 4
Mensagens: 907
Registrado em: 07 Jul 2004 13:54
Localização: Ilha Solteira-sp

Problema GetSys Alterado

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

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

Problema GetSys Alterado

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
alxsts
Colaborador
Colaborador
Mensagens: 3108
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Problema GetSys Alterado

Mensagem 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 ) )
[]´s
Alexandre Santos (AlxSts)
Mário Isa
Usuário Nível 4
Usuário Nível 4
Mensagens: 907
Registrado em: 07 Jul 2004 13:54
Localização: Ilha Solteira-sp

Problema GetSys Alterado

Mensagem 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
Responder