GETSYS pra multithread e algo mais
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
GETSYS pra multithread e algo mais
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:
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.
Limite de tempo. Se inkey retorna 0, significa que o tempo acabou, então troca por ESC.
Não aceita caracteres especiais
O clique do mouse, limitado a um único get
E a rotina auxiliar pra calcular o tamanho do get
São pequenas alterações, não corre o risco de criar problemas.
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:
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.
Limite de tempo. Se inkey retorna 0, significa que o tempo acabou, então troca por ESC.
Não aceita caracteres especiais
O clique do mouse, limitado a um único get
E a rotina auxiliar pra calcular o tamanho do get
São pequenas alterações, não corre o risco de criar problemas.
- Anexos
-
getsys.zip- (5.46 KiB) Baixado 198 vezes
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/
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/
GETSYS pra multithread e algo mais
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)
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)
GETSYS pra multithread e algo mais
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.
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.
►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)
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)
GETSYS pra multithread e algo mais
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.
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)
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)
GETSYS pra multithread e algo mais
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
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
►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)
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)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
GETSYS pra multithread e algo mais
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.
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 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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
GETSYS pra multithread e algo mais
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
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.
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
Código: Selecionar todos
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
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 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/
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/
GETSYS pra multithread e algo mais
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)
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)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
GETSYS pra multithread e algo mais
Justamente, essa seria a idéia desta parte:
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.
Código: Selecionar todos
IF ! oGet:Validate()
lExit := .F.
oGet:SetPos()
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 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/
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/
