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 460 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: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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 268 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 319 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: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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: 3092
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