Página 1 de 1
GETSYS pra multithread e algo mais
Enviado: 12 Abr 2017 19:55
por JoséQuintas
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.
GETSYS pra multithread e algo mais
Enviado: 12 Abr 2017 20:45
por asimoes
Obrigado Quintas
GETSYS pra multithread e algo mais
Enviado: 13 Abr 2017 01:42
por asimoes
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 190 vezes
GETSYS pra multithread e algo mais
Enviado: 13 Abr 2017 16:33
por asimoes
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.
GETSYS pra multithread e algo mais
Enviado: 13 Abr 2017 19:49
por asimoes
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 146 vezes
GETSYS pra multithread e algo mais
Enviado: 13 Abr 2017 20:29
por JoséQuintas
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.
GETSYS pra multithread e algo mais
Enviado: 13 Abr 2017 20:36
por JoséQuintas
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
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
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.
GETSYS pra multithread e algo mais
Enviado: 13 Abr 2017 21:32
por asimoes
Quintas, poderia também validar tudo no final e fazer o setfocus onde a validação retorne .f., é só uma ideia.
GETSYS pra multithread e algo mais
Enviado: 13 Abr 2017 22:39
por JoséQuintas
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.