Clipper On Line • Ver Tópico - Hwgui 2.22 release 1

Hwgui 2.22 release 1

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Hwgui 2.22 release 1

Mensagempor leandrolinauer » 31 Ago 2020 10:28

Bom dia aSimoes.
Fiz testes aqui separado com o seu exemplo, mas não obtive exito, o seu teste roda abre executa mas fazendo um menu e executando para chamar modulos em gtwvw executa a hwgui mas não abre nada da gtwvw, nem colocando em thread(), não obtive exito algum com as duas juntas.
Notei na sua imagem, que tem um browse em HWGUI atras da tela em GTWVW, isto que tentei fazer aqui com menu, mas não da certo.

Se puder me ajudar enviando como a tela principal em HWGUI chamar um módulo em gtwvw.
Meu exemplo que funciona a parte hwgui mas não funciona a GTWVW
#include "hwgui.ch"
#include "gtk.ch"
#include "hbthread.ch"

Function Main
Local oWndMain
Memvar oFont

   oFont := HFont():Add( "Courier",0,-14 )
   INIT WINDOW oWndMain MAIN TITLE "HWGUI PRINCIPAL" AT 200,100 SIZE 300,300

   MENU OF oWndMain
     MENU TITLE "&Arquivos"
       MENUITEM "&GTWVW" ACTION JanelaGtwvw() //preciso aqui chamar modulos 100% gtwvw
       SEPARATOR
       MENUITEM "&Saída" ACTION oWndMain:Close()
     ENDMENU
   ENDMENU

   ACTIVATE WINDOW oWndMain

Return Nil

Procedure JanelaGtwvw()

cRotina := "Teste()" //sua rotina em gtwvw
nThread := Hb_ThreadStart( HB_BITOR( HB_THREAD_INHERIT_PUBLIC, ;
                                     HB_THREAD_INHERIT_PRIVATE, ;
                                     HB_THREAD_INHERIT_MEMVARS, ;
                                     HB_THREAD_MEMVARS_COPY ), ;
                                     { ||  &cRotina. } )

   WaitThread( nThread )
Return Nil

FUNCTION WaitThread( nThread )

   DO WHILE .T.
      IF Hb_ThreadWait( nThread, 0.1, .T. ) == 1
         EXIT
      ENDIF
      hwg_DoEvents()
   ENDDO
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 377
Data de registro: 16 Out 2006 10:59
Cidade/Estado: Paranaíba-MS
Curtiu: 0 vez
Mens.Curtidas: 12 vezes

Hwgui 2.22 release 1

Mensagempor Fernando queiroz » 31 Ago 2020 10:58

duas coisas use DIALOG em vez de WINDOW e separe os arquivos , o que for hwgui fica em um PRG e gt fica em outro, se ficarem juntos da problemas
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

Hwgui 2.22 release 1

Mensagempor leandrolinauer » 31 Ago 2020 14:35

Boa tarde.
Sim os fontes estão separados, o que é gtwvw esta em prg separado do hwgui, o código abaixo é em HWGUI ficaria no principal o qual chama o TESTE() que é em GTWVW.

Procedure JanelaGtwvw()

cRotina := "Teste()" //sua rotina em gtwvw
nThread := Hb_ThreadStart( HB_BITOR( HB_THREAD_INHERIT_PUBLIC, ;
                                     HB_THREAD_INHERIT_PRIVATE, ;
                                     HB_THREAD_INHERIT_MEMVARS, ;
                                     HB_THREAD_MEMVARS_COPY ), ;
                                     { ||  &cRotina. } )

   WaitThread( nThread )
Return Nil

FUNCTION WaitThread( nThread )

   DO WHILE .T.
      IF Hb_ThreadWait( nThread, 0.1, .T. ) == 1
         EXIT
      ENDIF
      hwg_DoEvents()
   ENDDO

Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 377
Data de registro: 16 Out 2006 10:59
Cidade/Estado: Paranaíba-MS
Curtiu: 0 vez
Mens.Curtidas: 12 vezes

Hwgui 2.22 release 1

Mensagempor JoséQuintas » 31 Ago 2020 15:21

leandrolinauer escreveu:Boa tarde.
Sim os fontes estão separados, o que é gtwvw esta em prg separado do hwgui, o código abaixo é em HWGUI ficaria no principal o qual chama o TESTE() que é em GTWVW.


Tem duas questões aí:
- HBC acrescentar arquivo CH automático
- HBMK2 acrescentar arquivo CH, por compilar vários fontes ao mesmo tempo

No caso do HBP pode criar subprojetos, pra isolar ao máximo as configurações

--- principal.hbp ---
-hbcontainer
projetowvw.hbp
projetohwgui.hbp

E um projeto transformar em lib, acrescentando -hblib e o nome de saída -onome
E no outro projeto apenas incluir a lib do anterior -lnome

Lembrando que se não existir chamada a um módulo da lib, a lib pode não ser adicionada.
Neste caso ou aproveita o recurso de hbx, ou adiciona chamada no principal.

IF .F. // é só pra linqueditar
   seila()
ENDIF


isto é pra casos do tipo do ( "seila" ) ou &( "seila()" ), onde a função fica de fora do EXE.
Apesar que acho que um #request "seila" seria mais adequado.
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: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Hwgui 2.22 release 1

Mensagempor JoséQuintas » 31 Ago 2020 18:21

Vamos voltar ao problema inicial, acho que deixamos passar algo:

Dava erro pra alterar o título da janela.
A janela existe? mesmo que invisível?

Dependendo da LIB que entrar primeiro, pode ou não existir a janela Main() da LIB.
Um primeiro "truque", é forçar que existam as duas Main().

Mas lembro na época que testei, que um problema na hwgui foi que ao fechar a Main() da hwgui, fechava o aplicativo inteiro.
Já não lembro como resolvi, ou se resolvi, mas talvez esteja nesses fontes exemplo que postei.

No caso da GTWVG, colocando como principal, ela acaba contendo uma janela invisível, que vai aparecer assim que for usada.
No caso da GTWVW, não sei se precisa alguma coisa a mais.

Vamos complicar mais: quando usa na compilação -gui, se não indicar mais nada, a janela principal é..... GTWVT, a default do Harbour.
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: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Hwgui 2.22 release 1

Mensagempor MSDN » 31 Ago 2020 18:35

Quintas, tira uma dúvida...vc sempre falou que ter janelas independentes é melhor para o sistema, mas na prática, visto que o resto do mundo utiliza o método tradicional, sendo modal ou child, qual vantagem prática tem o seu método ?
MSDN
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 28 Nov 2003 14:55
Cidade/Estado: CWB
Curtiu: 178 vezes
Mens.Curtidas: 123 vezes

Hwgui 2.22 release 1

Mensagempor Itamar M. Lins Jr. » 01 Set 2020 10:24

Ola!
GTWVW no Harbour 3.2 não compila com GCC 10.1 64Bits.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6960
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 313 vezes
Mens.Curtidas: 508 vezes

Hwgui 2.22 release 1

Mensagempor JoséQuintas » 01 Set 2020 13:31

Pera aí... tem outra coisa importante....

Quem disse que GTWVW é multithread?

MSDN escreveu:Quintas, tira uma dúvida...vc sempre falou que ter janelas independentes é melhor para o sistema, mas na prática, visto que o resto do mundo utiliza o método tradicional, sendo modal ou child, qual vantagem prática tem o seu método ?


Não exatamente isso. multithread é igual EXE separado. Se é igual EXE separado, funciona independente, só misturando o que você quiser.

Um exemplo prático:

Abrir o mesmo DBF, com mesmo alias, em duas janelas.
Se é em thread diferente, cada janela faz o que quiser com o DBF.
Se é na mesma thread... aí precisa muito controle pra não ter problema.
Pode até usar CLOSE DATABASES, que só vai fechar o que foi aberto naquela thread/janela.
E como tudo é independente, abre e fecha como quiser, na ordem que quiser, até QUIT, só fecha a thread/janela do QUIT.

HWGUI parece que vai fazendo uma única pilha de tudo.
E como é uma única pilha, tem que ir fechando as janelas na ordem em que abriu.

Mas considere que GTWVG é diferente, é janela Windows usada como console.
Ao invés de ficar controlando a parte gráfica em troca de telas, mais fácil ter tela independente.
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: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Hwgui 2.22 release 1

Mensagempor JoséQuintas » 01 Set 2020 13:40

Mas legal mesmo da multithread é ver como os antivírus são um lixo.
A Main do meu aplicativo dispara a thread normal.
No caso de antivírus, onde o antivírus congela a thread principal.... o aplicativo consegue checar todos os DBFs, e fazer mais coisas, mesmo com a thread principal congelada.

É simples assim enganar um antivírus, só executar em thread e nada mais.
E quanto mais threads, maior o estrago antes de ser detectado pelo antivírus.
Digamos que o programa roda por 1 minuto ou mais fazendo o que quiser.
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: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Hwgui 2.22 release 1

Mensagempor leandrolinauer » 01 Set 2020 17:36

Boa tarde JoséQuintas.
Fiz no meu projeto como você recomendou, mas continua da mesma forma.

Meu hbp principal.
@hbmk.hbm
@hbmkSQL.hbm

-oGesCom

# -hbcontainer //não entendi pra que serve, mas pelo nome sugere que seja unido em um unico container
-gui
-prgflag=/m /n
-compr

@GescomGTWVW.HBP  //PROJETOS EM GTWVW
@GescomQT.HBP  //PROJETOS EM QT
# @GescomHWGUI.HBP //PROJETOS EM HWGUI

LeSoft.RC


Se eu incluir o projeto HWGUI
@GescomHWGUI.HBP //PROJETOS EM HWGUI
O sistema da erro em qualquer linha inicial em GTWVW.

O que não ocorre com QT, QT inicia junto e executa o módulo em qt, já com HWGUI nem executa o sistema, da erro e pronto.
Nada que eu fiz faz com que HWGUI rode junto com GTWVW, junto no mesmo sistema, mas em módulos separados.

Grato
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 377
Data de registro: 16 Out 2006 10:59
Cidade/Estado: Paranaíba-MS
Curtiu: 0 vez
Mens.Curtidas: 12 vezes

Hwgui 2.22 release 1

Mensagempor MSDN » 01 Set 2020 19:18

Obrigado por responder Quintas, mas sinceramente acho que é mais gosto pessoal mesmo, não notei algo que fosse significativo.
MSDN
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 28 Nov 2003 14:55
Cidade/Estado: CWB
Curtiu: 178 vezes
Mens.Curtidas: 123 vezes

Hwgui 2.22 release 1

Mensagempor JoséQuintas » 01 Set 2020 19:27

Erro na idéia.

-hbcontainer indica um projeto sem arquivos, apenas subprojetos.

O problema é:

Isto gera cada projeto, compila e linquedita cada um, gera lib, exe, até mais de um, se for o caso
projeto1.hbp
projeto2.hbp

Isto junta os hbps no hbp atual, compila e linquedita tudo como um EXE só ou uma LIB só, a mesma coisa de fazer um hbp único
@projeto1.hbp
@projeto2.hbp
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: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Hwgui 2.22 release 1

Mensagempor JoséQuintas » 01 Set 2020 20:01

MSDN escreveu:Obrigado por responder Quintas, mas sinceramente acho que é mais gosto pessoal mesmo, não notei algo que fosse significativo.


Talvez interesse mais pra GTWVG ou GT multithread.
Compile usando -mt gtwvg.hbc
Vai ver 10 janelas independentes... desde que tire uma de cima da outra.... rs

#include "inkey.ch"

PROCEDURE Main

   LOCAL nCont

   FOR nCont = 1 TO 5
      hb_ThreadStart( { || Test1() } )
      Inkey(0.3)
      hb_ThreadStart( { || Test2() } )
      Inkey(0.3)
   NEXT
   hb_ThreadWaitForAll()

   RETURN

FUNCTION Test1()

   LOCAL nCont := 0

   hb_GtReLoad( "WVG" )
   SetMode( 30, 50 )
   CLS
   DO WHILE Inkey() != K_ESC
      ? nCont++
   ENDDO

   RETURN NIL

PROCEDURE Test2

   LOCAL cTexto1 := Space(30), cTexto2 := Space(30), GetList := {}

   hb_gtReload( "WVG" )
   SetMode( 30, 50 )
   CLS
   @ 1, 0 SAY "linha1" GET cTexto1
   @ 2, 0 SAY "linha2" GET cTexto2
   READ

   RETURN

PROCEDURE HB_GTSYS

   REQUEST HB_GT_WVG_DEFAULT

   RETURN


Não sei se ajuda no problema do tópico.
Ao definir GTWVG como default, o Harbour já entra com a janela GTWVG ativa, mas oculta.
Se não fizer isso, provavelmente entra a console ou outra no lugar, e talvez nem funcione direito.

hb_gtReload() é onde a thread carrega uma janela pra ela, separada da principal.
Lembrando que JANELA NÃO significa apenas a janela, mas input/output, teclado/mouse/saída pra tela

Esse é o ponto onde a mistura de LIBs pode encrencar, porque cada uma vai querer ser a primeira, e as demais podem depender da primeira.
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: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Hwgui 2.22 release 1

Mensagempor JoséQuintas » 01 Set 2020 20:12

JoséQuintas escreveu:Esse é o ponto onde a mistura de LIBs pode encrencar, porque cada uma vai querer ser a primeira, e as demais podem depender da primeira.


E aí também pode entrar a multithread: como fica igual EXE separado.... isso dá uma isolada nas LIBs, deixando uma em cada thread, e evitando interferência.
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: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Hwgui 2.22 release 1

Mensagempor JoséQuintas » 01 Set 2020 20:18

Só pra lembrar os planos B e C:

Plano B: se conseguir compilar junto, pode chamar o mesmo EXE ora gtwvw ora hwgui.

FUNCTION Main( cModulo )
   IF cModulo != NIL
      // configura hwgui
      do ( cModulo )
      RETURN
   ENDIF
   // usa GTWVW
....

DO WHILE .T.
   @ 1, 0 PROMPT "1 - compras wvw"
   @ 2, 0 PROMPT "2 - vendas hwgui"
   MENU TO nOpc
   DO CASE
   CASE nOpc == 1
      // modulo
   CASE nOpc == 2
      RUN ( "ESTE.EXE   MODULO0020" )
      RETURN
   ENDCASE
ENDDO


E o plano C, a mesma coisa, mas com EXEs separados, um pra tudo que é GTWVW e outro pra tudo que é HWGUI.
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: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Anterior Próximo



Retornar para HwGui

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