Clipper On Line • Ver Tópico - GT-HWGUI

GT-HWGUI

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

GT-HWGUI

Mensagempor JoséQuintas » 27 Nov 2020 16:24

Acabo de sugerir a criação da GT_HWGUI.

O segredo principal é este:

         hb_gtInfo( HB_GTI_NOTIFIERBLOCKGUI, {| nEvent, ... | t_oCrt:notifier( nEvent, ... ) } )


Como eu já disse por aqui várias vezes, é usar a janela do Harbour como Main.
Mas não se preocupem: seria uma alternativa a mais, não algo obrigatório.
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: 15499
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 897 vezes

GT-HWGUI

Mensagempor asimoes » 27 Nov 2020 17:47

Mostra um exemplo 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: 4901
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 331 vezes
Mens.Curtidas: 229 vezes

GT-HWGUI

Mensagempor JoséQuintas » 27 Nov 2020 17:56

asimoes escreveu:Mostra um exemplo Quintas


Não mudaria nada, exceto a tela de fundo, caso usasse essa outra Main, igual acontece com GTWVG.

Pra ficar igual, faltaria também o redimensionamento automático, que é aquela questão de fator de conversão.

Ao invés de x, y usar x * fator e y * fator
Com default 1, continua como sempre, porque x * 1 = x.

Um exemplo: gtwvg.
Tela "console" com buttons hwgui, ou scrollbar, ou outros.

Com a diferença de poder usar telas totalmente hwgui, junto ou não.
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: 15499
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 897 vezes

GT-HWGUI

Mensagempor JoséQuintas » 27 Nov 2020 20:11

Primeiro protótipo de uma GT-HWGUI.
Então... GTWVG é assim... igual HWGUI ficou.... kkkkk
Console com recursos HWGUI !!!!!
GTWVG está só emprestando a janela e nada mais, nem testei com WVT.
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: 15499
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 897 vezes

GT-HWGUI

Mensagempor asimoes » 29 Nov 2020 07:32

Show Quintas
Mas isso ai precisar estar nos projetos harbour e hwgui certo?
Só falta ver na GTWVT
►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: 4901
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 331 vezes
Mens.Curtidas: 229 vezes

GT-HWGUI

Mensagempor JoséQuintas » 29 Nov 2020 19:42

Decidi dar um empurrãozinho das coisas....
Lancei a descoberta no grupo harbour-users.
Com certeza o pessoal das LIBs podem criar alguma coisa bem mais rápido do que eu, porque tem a ver diretamente com as LIBs.
E se aquilo for exclusivo da GTWVG, de repente pode ser aberto pra tudo, Linux e Windows.
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: 15499
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 897 vezes

GT-HWGUI

Mensagempor JoséQuintas » 30 Nov 2020 21:47

Esse meu teste entrou na pasta de testes da HWGUI.
Mas acho que não entenderam que o fonte da Main console é da própria Main HWGUI.
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: 15499
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 897 vezes

GT-HWGUI

Mensagempor JoséQuintas » 01 Dez 2020 04:03

O vídeo do youtube foi bloqueado, relatando sobre direitos autorais.
Como o post contém o que havia no vídeo, por enquanto excluindo a maior parte dele.
Não sei que parte tem a ver com isso, apenas imagino o nice button, com o nome do autor.
Espero que não seja a hwgui, ou a gtwvg.
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: 15499
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 897 vezes

GT-HWGUI

Mensagempor asimoes » 01 Dez 2020 06:36

Tinha música no vídeo? eles podem ter bloqueado por isso, remove o nome do Culik
►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: 4901
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 331 vezes
Mens.Curtidas: 229 vezes

GT-HWGUI

Mensagempor JoséQuintas » 01 Dez 2020 11:58

Gravei usando o celular, acabou entrando a música que tava tocando, mas bem baixo.

Mas o principal é isto mesmo:
         hb_gtInfo( HB_GTI_NOTIFIERBLOCKGUI, {| nEvent, ... | t_oCrt:notifier( nEvent, ... ) } )


Toda janela tem rotina de tratamento GUI, isso coloca a mesma rotina na janela GT.
E copia a classe principal da lib gui, altera o nome pra usar pra janela console.
Tipo... pega a classe da Window Main da hwgui, copia para GTMain, e altera pra, ao invés de criar uma janela, define a atual GT como sendo a janela Main.
Se usar a classe original, continua hwgui original.
Se usar essa cópia com outro nome, a janela GT passa a ser a Main.
Em outras palavras:
- na GT tá avisando que os eventos serão tratados pela hwgui
- na hwgui tá apenas trocando a janela de fundo pela atual GT

Lembrando:
Estamos falando de uma janela Main GT.
Outras janelas, como as DIALOGs, continuam como sempre foram, totalmente hwgui.
Então, não se perde nada da hwgui, apenas acrescenta a opção de determinada janela ser GT, e mesmo assim ter recursos hwgui nessa janela GT.
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: 15499
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 897 vezes

GT-HWGUI

Mensagempor JoséQuintas » 02 Dez 2020 11:46

Só fiz um teste rápido, sempre os mesmos fontes.
Usei o exemplo testget2.

Lembrando:
esse controle precisa de uma DIALOG, ao usar a GT, ela não tem as rotinas que a DIALOG tem.
Mas provavelmente basta acrescentar na classe.
É SÓ EXEMPLO, NÃO COMPENSA USAR CERTAS COISAS EM JANELA CONSOLE.
No uso prático vai ser uma DIALOG mesmo, aqui é só pra reforçar que a tela GT é apenas "uma tela de fundo" e nada mais, como se fosse um papel de parede.
É só pegar o fonte da dialog, e trocar a janela de fundo por uma GT, SE FOSSE O CASO, mas NÃO COMPENSA.

Comparando com hwgui, é como se eu tivesse usado a janela Main() da hwgui ao invés de usar a DIALOG, que é a forma correta.
Lembrando que o oposto seria verdadeiro, hwgui usando console vira gtwvg, gtwvg usando janela gui vira GUI.
Mas... se hwgui tem tudo pronto, não compensa mexer na gtwvg, foi só uma comparação simples, que sempre mencionei, e tá mais do que provado que é isso mesmo.

teste.png


Lembrando também. É HWGUI pura, apenas usando a janela GT como fundo.
Só um fonte a mais, sem mexer em NADA da hwgui.
Usando uma DIALOG, é a DIALOG que é responsável por cores e efeitos para esses controles.
O que se perdeu, é o que não está implementado no fonte pra usar GT, mas que não precisa, porque esse fonte funcionaria direto na DIALOG original, e usar GT seria só perda de tempo PRA ISSO.
Na janela GT usaria os GETS normais, afinal, ela seria pra isso.

Traduzindo:
- Pode usar tela GT
- Pode usar tela GT com coisas da HWGUI
- Pode usar tela HWGUI total
- E tudo ao mesmo tempo
Melhor que isso pra converter aplicativo impossível.
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: 15499
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 897 vezes

GT-HWGUI

Mensagempor JoséQuintas » 02 Dez 2020 21:41

Aqui fica claro o funcionamento de GUI:

SYSTEM ERROR
Error BASE/2010 Argument error: WAPI_SETTEXTCOLOR
Called from WAPI_SETTEXTCOLOR(0)
Called from WVGTSTICON:HANDLEEVENT(561)
Called from WVGCRT:NOTIFIER(393)
Called from (b)WVGSETAPPWINDOW(78)
Called from WAPI_ENABLEWINDOW(0)
Called from WVGTSTICON:DISABLE(409)
...


Notem que as mensagens do Windows passam por:
wvgSetAppWindow(), janela main igual usei pra HWGUI
wvgCrt:Notifier, similar à OnEvent() da HWGUI para a WINDOW MAIN
wvgTstIcon:Notifier, similar à OnEvent() do ícone da HWGUI

É troca de mensagens entre janelas o tempo todo.
Depois vou ver porque deu esse erro... é estranho porque o que não falta no aplicativo é ícone.... rs
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: 15499
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 897 vezes

GT-HWGUI

Mensagempor asimoes » 02 Dez 2020 22:19

Isso é OnEvent na hwgui fica executando como se fosse uma thread
Todas as classes se não me engano tem o seu OnEvent
►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: 4901
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 331 vezes
Mens.Curtidas: 229 vezes

GT-HWGUI

Mensagempor JoséQuintas » 03 Dez 2020 17:47

asimoes escreveu:Isso é OnEvent na hwgui fica executando como se fosse uma thread
Todas as classes se não me engano tem o seu OnEvent


Isso, e se não tiver, é porque pode estar na classe herdada.

Uma coisa que a GTWVG usa, talvez pra facilitar localizar, ou pra evitar pegar método errado, é o método com o nome da classe.

tipo:

CLASS wvgWindow
...
METHOD wvgWindow:HandleEvent()


ou

CLASS toolbar INHERIT wvgWindow, wvgPartHandler, wvgOutra
METHOD x()
   ::wvgWindow:HandleEvent()


é interessante saber dessa opção.
de repente uma classe herda outra, que herda outra, que herda outra, ou até que herda várias classes de uma vez.
E se queremos o método da classe herdada 1 e não da classe herdada 2?
Ou ao chamar ::Super:New(), vai fazer o new() de qual delas?
Do jeito acima, pode evitar confusão.

Pois é... isso de classe vai longe.
E se não tomar cuidado, pode deixar passar coisa importante.

No começo estranhei esse uso, mas depois entendi o porque.
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: 15499
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 897 vezes

GT-HWGUI

Mensagempor JoséQuintas » 04 Dez 2020 15:02

Agora vocês vão se espantar mais ainda.
Considerando apenas que funciona, sem se importar com outros detalhes.

A classe responsável por tudo.... não deu pra deixar menor.... kkkkk
Somente 3 linhas.
É a classe da HWGUI, trocando a janela pela GT.

CLASS HGT INHERIT HMainWindow
   METHOD New() INLINE ::Super:New(), ::Handle := hb_gtInfo( HB_GTI_WINHANDLE ), Self
ENDCLASS


E... na janela GT, desvia eventos GUI para os eventos da classe, que passou a ser a nova Main da hwgui.

THREAD STATIC MainWVT

FUNCTION MainGT()

   IF Empty( MainWVT )
      MainWVT := HGT():New()
      MainWVT:Handle := hb_gtInfo( HB_GTI_WINHANDLE )
      hb_gtInfo( HB_GTI_NOTIFIERBLOCKGUI, { | nEvent, ... | MainWVT:OnEvent( nEvent, ... ) } )
      //MainWVT:IsGT := .T.
   ENDIF

   RETURN MainWVT


De adicional, já tinha no fonte anterior, o evento de encerramento destruindo a classe que foi criada.

EXIT PROCEDURE KillGTChildren()

   IF HB_ISOBJECT( MainWVT ) .AND. MainWVT:ClassName() == "WVTCRT" .AND. MainWVT:isGT
      MainWVT:destroy()
      MainWVT := NIL
   ENDIF

   RETURN


Até eu me espantei agora...
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: 15499
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 897 vezes

Próximo



Retornar para HwGui

Quem está online

Usuários vendo este fórum: Semrush [Bot] e 3 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