Clipper On Line • Ver Tópico - Tutorial GTWVG

Tutorial GTWVG

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

Moderador: Moderadores

 

Tutorial GTWVG

Mensagempor JoséQuintas » 17 Jun 2019 11:24

Então, a GTWVG se dividiu em duas partes:
- Trabalhar com a tela inteira como uma única imagem/objeto
- Trabalhar com vários objetos/telas

E várias janelas?
É bom dar uma olhada na crt.prg

   IF ::lModal
      ::pGT  := hb_gtCreate( "WVG" )
      ::pGTp := hb_gtSelect( ::pGT )
   ELSE
      hb_gtReload( "WVG" )
      ::pGT := hb_gtSelect()
   ENDIF


hb_gtSelect() é a parte de teclado/mouse/saída em tela, podemos comparar isso a ter janela de vários EXEs, e selecionar um dos EXEs para fazer digitação

Modal significa que a janela anterior não pode ser mexida, então "transfere-se" a digitação da janela atual pra nova janela - como se fosse no DOS um RUN ( "programa.exe" ), e o programa atual ficar aguardando que o programa chamado se encerre. Neste modo o usuário não tem escolha, só pode voltar à janela anterior após encerrar a janela atual.

E não modal... como se fossem EXEs separados, cada "EXE" vinculado com sua própria janela. Neste modo o usuário escolhe a janela que quiser pra digitar.

É importante também destacar o ::pGT := hb_gtSelect()
Isso retém a janela. Se uma variável não "guardar o teclado/mouse/tela" anterior, a tela se fecha sozinha, porque a janela anterior não teria mais nada pra fazer.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11895
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 758 vezes

Tutorial GTWVG

Mensagempor JoséQuintas » 17 Jun 2019 11:33

multi.png


O que isso acima faz?
Dependendo da máquina nem dá pra ver, mas abre e fecha a janela rapidamente, porque não tem parada.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11895
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 758 vezes

Tutorial GTWVG

Mensagempor JoséQuintas » 17 Jun 2019 11:37

multi.png


E isto?
Mesma coisa.
Apesar da thread ter um inkey(0), quem manda é a Main().
Encerrou a Main() encerra tudo.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11895
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 758 vezes

Tutorial GTWVG

Mensagempor JoséQuintas » 17 Jun 2019 11:44

multi2.png


multi.png
multi.png (4.54 KiB) Visualizado 141 vezes


Agora tem uma pausa.
Como nada em contrário foi indicado, a mesma janela é usada pra Main() e pra Teste().

É bom analisar estes posts, pode ser interessante pra misturar HWGUI, HMGE, etc. com GTWVG.

Ponto importante:
Como estou compilando como GTWVG.HBC, assume GTWVG como default.
Assim que há uma saída em tela, é criada a janela GTWVG, caso não exista.
Lembram? É janela Windows. Pra sair texto precisa existir a janela....
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11895
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 758 vezes

Tutorial GTWVG

Mensagempor JoséQuintas » 17 Jun 2019 11:49

multi.png


Aqui começa a ficar legal.
Carreguei uma nova janela pra thread.
Agora são duas janelas independentes - ou quase.
De qualquer jeito, ao encerrar a janela Main(), a outra janela é fechada.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11895
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 758 vezes

Tutorial GTWVG

Mensagempor JoséQuintas » 17 Jun 2019 11:54

Aqui alterei pra poder usar debug.
Lembram? precisa uma tela pra funcionar teclado/mouse... acrescentei um CLS pra criar a janela e o Inkey(0) pra poder acionar o debug.

multi.png
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11895
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 758 vezes

Tutorial GTWVG

Mensagempor JoséQuintas » 17 Jun 2019 11:56

Teclei F8, e lá está a segunda janela totalmente independente.

multi.png
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11895
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 758 vezes

Tutorial GTWVG

Mensagempor JoséQuintas » 17 Jun 2019 11:59

Será que é mesmo?
Vamos acionar o debug pra nova thread.

multi.png


Sim, como dois EXEs separados.
Continua valendo: se fechar Main(), fecha tudo.
Se teclar F8 na primeira janela de debug (Main()), tudo se fecha.
Se teclar F8 na segunda janela de debug (teste()), somente teste se fecha.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11895
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 758 vezes

Tutorial GTWVG

Mensagempor JoséQuintas » 17 Jun 2019 12:03

Podemos complicar pra brincar um pouco mais.
Tres janelas agora.
Continua valendo: se fechar Main() fecha tudo, mas podemos fechar qualquer das outras duas janelas, em qualquer ordem.
E também podemos abrir 3 telas de debug, uma pra cada thread.

multi.png
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11895
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 758 vezes

Tutorial GTWVG

Mensagempor JoséQuintas » 17 Jun 2019 12:12

multi.png


Agora ficou mais legal ainda.
Alterei a Main() pra não ter janela, portanto não dá pra fechar, nem dá pra teclar nada.
A Main() apenas aciona as threads, e fica aguardando enquanto existir thread aberta.
Ao fechar as 3 janelas, a Main() se fecha sozinha.
CUIDADO. Se colocar um Inkey(0) numa janela que não existe, não há como teclar.
O resultado seria o programa preso, e ter que fechar no gerenciador de tarefas.,
O mesmo aconteceria se fosse numa thread, porque Main() não fecharia enquanto a thread não fosse fechada (se considerar essa Main())

Pra misturar GTWVG com outras LIBs, pode ser interessante que a Main() seja uma GTWVG oculta como essa.
Pode ser interessante até mesmo pra HMG, caso queira que sejam executadas tarefas após HMGE se encerrar !!!!!!
Mas isso é assunto pra outro post, ou, o que é melhor: cada um faz seus testes e verifica o resultado - principalmente olhar o gerenciador de tarefas pra ver se o programa não está preso por faltar alguma coisa.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11895
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 758 vezes

Tutorial GTWVG

Mensagempor JoséQuintas » 17 Jun 2019 12:41

Fugi do assunto GTWVG e entrei em multithread?
Talvez não, se considerar que multithread é justamente um ponto forte da GTWVG, e de poucas outras LIBs.

Importante:
Usamos muito o console, principalmente pra ver a mensagem de erro detalhada, que aparece no final, quando usamos console, igual no Clipper.
Ao usar janela Windows.... não existe parada após o texto detalhado do erro, e a janela se fecha.
No meu caso resolvi desviando os erros para um arquivo TXT, e abrindo pelo bloco de notas.

multi.png


Multithread lembram? Independentes lembram?
Encerrei duas threads teclando algo, que gravou dois erros, mas a terceira ainda está em execução - com erro na tela, mas está em execução.
Já as outras que fecharam, se não fosse o erro em txt, não teria a informação detalhada.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11895
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 758 vezes

Tutorial GTWVG

Mensagempor JoséQuintas » 17 Jun 2019 12:48

multi.png


Vamos exagerar um pouquinho....
Uma thread já deu erro e fechou, outra está no debug, e outra está em execução parada com mensagem de erro.
Isso é pra mostrar que thread no Harbour é totalmente independente, igual a 3 EXEs separados - quase, a exceção é que se Main() fechar, aí fecha tudo.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11895
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 758 vezes

Tutorial GTWVG

Mensagempor ANDRIL » 17 Jun 2019 19:47

José Parabéns pelo seu post. Estou acompanhando sempre que posso, sua didática é muito boa. Se possível teria como postar seguindo o exemplo da janela em modo GUI (que usou os buttons) outros elementos similares a get, checkbox, radiobutton e alguns outros e sabe se é possível colocar imagens nestes buttons da GTWVG?
Clipper 5.2e / Blinker 5.1
Harbour 3.0 e 3.2
------------------------
Visitem http://www.nsi-sp.com
Avatar de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1062
Data de registro: 06 Jul 2004 00:44
Curtiu: 9 vezes
Mens.Curtidas: 29 vezes

Tutorial GTWVG

Mensagempor JoséQuintas » 17 Jun 2019 22:17

ANDRIL escreveu:sabe se é possível colocar imagens nestes buttons da GTWVG?


Com certeza dá pra usar imagens.
Vou fazer uns testes com alguns controles da GTWVG que nem cheguei a usar.
Também vou colocar alguns dos que criei.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11895
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 758 vezes

Tutorial GTWVG

Mensagempor JoséQuintas » 17 Jun 2019 22:34

wvg.png
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11895
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 758 vezes

Anterior Próximo



Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Google Adsense [Bot] e 1 visitante


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
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro