Clipper On Line • Ver Tópico - GETSYS pra multithread e algo mais

GETSYS pra multithread e algo mais

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

GETSYS pra multithread e algo mais

Mensagempor JoséQuintas » 12 Abr 2017 19:55

Agora que o A Simões perguntou sobre uma getsys é que vi esse detalhe.
Pra quem for usar multithread, precisa uma alteração relativamente simples: alterar STATIC var pra THREAD STATIC var.
Motivo simples: se não fizer isso, vai ficar misturado o controle das duas janelas, com resultado imprevisto
Pelo menos a getsys original do 5.2... tinha esquecido que fiz essa alteração.

Nenhuma alteração extraordinária, apenas alterações relativamente simples, que considero úteis, ou que o Clipper 5.2 precisava, ou que surgiu depois...

Multithread:

getsys1.png


Salvar os valores ANTES DE UM GET, e comparar depois DESSE GET pra ver se mudou alguma coisa. Se mudou, atualiza a tela. Falta isso inclusive no Harbour.

getsys2.png


Limite de tempo. Se inkey retorna 0, significa que o tempo acabou, então troca por ESC.

getsys3.png


Não aceita caracteres especiais

getsys4.png


O clique do mouse, limitado a um único get

getsys5.png


E a rotina auxiliar pra calcular o tamanho do get

getsys6.png


São pequenas alterações, não corre o risco de criar problemas.
Anexos
getsys.zip
(5.46 KiB) Baixado 73 vezes
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 17942
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

GETSYS pra multithread e algo mais

Mensagempor asimoes » 12 Abr 2017 20:45

Obrigado Quintas
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

GETSYS pra multithread e algo mais

Mensagempor asimoes » 13 Abr 2017 01:42

Quintas,

Eu fiz uma modificação na sua GetSys, agora a navegação entre os campos é possível, se possível analise e deixe as suas criticas.

GETSYS (2).PRG
GetSys modificada para usar mouse com navegação entre os gets
(18.83 KiB) Baixado 74 vezes
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

GETSYS pra multithread e algo mais

Mensagempor asimoes » 13 Abr 2017 16:33

Pessoal,

Não gostei do resultado, esperava repetir o mesmo comportamento da getsys original, esse getsys eu não posso substituir pelo original do harbour é um problema de legado de sistema em clipper que temos, tentei usar a getsys original que já tem esse tratamento para mouse mas algumas aplicações apresentaram problemas por usar algumas funções que não tem na getsys, enfim vamos tentando.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

GETSYS pra multithread e algo mais

Mensagempor asimoes » 13 Abr 2017 19:49

Não está perfeito mas já da pra usar.
O mouse pula de get em get pra baixo e pra cima obedecendo as validações, o meu objetivo e que seja clicado em qualquer get não sequencial

GETSMF.PRG
GetSys com mouse
(19.05 KiB) Baixado 78 vezes
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

GETSYS pra multithread e algo mais

Mensagempor JoséQuintas » 13 Abr 2017 20:29

Talvez a getsys do Clipper 5.3 já tenha isso, ou alguma getsys do Harbour.
Eu mostrei as alterações que fiz, então é pegar uma getsys mais adequada e acrescentar o que achar interessante.

Dei uma olhada no Harbour e tem 2.

getsys.prg
getsys53.prg

Inclusive a do Harbour é classe.
Talvez seja possivel aplicar herança ou algo assim.

Eu bloqueio salto de mouse, porque pode ter um valor que depende de outro, ou cálculo entre os gets.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 17942
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

GETSYS pra multithread e algo mais

Mensagempor JoséQuintas » 13 Abr 2017 20:36

Uma coisa que tinha no VB6, era o GET com a propriedade/método Validate.

E lembrando disso, talvez dê pra aproveitar algo parecido no Harbour, mas é perigoso se tiver cálculo ou algo mais.

Imagine os gets com valid... e no final dos gets algo parecido com isto:
Apenas exemplo teórico, não contém os nomes corretos

lExit := .F.
DO WHILE ! lExit
   READ SAVE
   IF LastKey() == K_ESC
      EXIT
   ENDIF
   lExit := .T.
   FOR EACH oGet IN GetList
      IF ! oGet:Validate()
        lExit := .F.
         oGet:SetPos()
         EXIT
      ENDIF
   NEXT
ENDDO
CLEAR GETS


Isso além de validar tudo no final, posicionaria no campo a ser corrigido, até que tudo passe na validação.
Tudo depende do que as validações fizerem de adicional....
Talvez até dentro da própria getsys fosse melhor.

No VB6 eu tinha a opção de usar Validate() e LostFocus().
Isso ajudava a distribuir o que podia ou não entre as duas. Validate() só validar, LostFocus() o que fazer ao sair do "get".

No VB5 não existia o Validate(), já dá pra imaginar o que acontecia... rs... inclusive travar.... rs... não cheguei a usá-lo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 17942
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

GETSYS pra multithread e algo mais

Mensagempor asimoes » 13 Abr 2017 21:32

Quintas, poderia também validar tudo no final e fazer o setfocus onde a validação retorne .f., é só uma ideia.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

GETSYS pra multithread e algo mais

Mensagempor JoséQuintas » 13 Abr 2017 22:39

Justamente, essa seria a idéia desta parte:

IF ! oGet:Validate()
        lExit := .F.
         oGet:SetPos()


Mas acho que pra isso funcionar teria que estar dentro da getsys, não sei se o READ SAVE é suficiente.
Lembrando que READ SAVE faz o READ, mas deixa toda a getlist pendente, até o CLEAR GETS.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 17942
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 2 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro