Clipper On Line • Ver Tópico - GTWVW,GTWVG,HWGUI,OOHG

GTWVW,GTWVG,HWGUI,OOHG

Outras bibliotecas visuais e IDEs para Harbour/xHarbour (xHGTK/HbWxW/GtWvT/GtWvW/WvWtools.etc)

Moderador: Moderadores

 

GTWVW,GTWVG,HWGUI,OOHG

Mensagempor JoséQuintas » 15 Set 2020 01:27

Ei

Digam aí

O que vocês querem misturar hoje?
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: 14703
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 867 vezes

GTWVW,GTWVG,HWGUI,OOHG

Mensagempor JoséQuintas » 15 Set 2020 01:36

Será que interessa pra alguém

Sem multithread, nem porr... nenhuma

Por enquanto foi só um teste simples: GTWVW + GTWVG + HWGUI

Agora vou ver se funciona pra OOHG também
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: 14703
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 867 vezes

GTWVW,GTWVG,HWGUI,OOHG

Mensagempor JoséQuintas » 15 Set 2020 01:49

#include "hwgui.ch"
#include "hbgtinfo.ch"

Function Main
Local oMainWindow
   Alert( hb_gtInfo( HB_GTI_VERSION ) )
   TestWVG()
   INIT WINDOW oMainWindow MAIN TITLE "Example" ;
     AT 200,0 SIZE 400,150

   MENU OF oMainWindow
      MENUITEM "&Exit" ACTION hwg_EndWindow()
      MENUITEM "&Dialog" ACTION DlgGet()
   ENDMENU

   ACTIVATE WINDOW oMainWindow
   Alert( hb_gtInfo( HB_GTI_VERSION ) )

Return Nil

//STATIC FUNCTION OOHG()
//
//   Hello()
//
//   RETURN

STATIC FUNCTION TestWVG()

   hb_gtReload( "WVG" )
   Alert( hb_gtInfo( HB_GTI_VERSION ) )

   RETURN

STATIC FUNCTION DlgGet()

   LOCAL oModDlg, oBrw1, cnSQL

   cnSQL := win_OleCreateObject( "ADODB.Recordset" )
   cnSQL:Open( hb_cwd() + "teste.ado" )

   INIT DIALOG oModDlg TITLE "Licenças" AT 0,0 SIZE 1024,768

   @ 1,1 BROWSE oBrw1 SIZE 1022,700 ;
        STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL
   @ 500,720 OWNERBUTTON ON CLICK {|| cnSQL:Close(), hwg_EndDialog()} ;
       SIZE 180,36 FLAT                                ;
       TEXT "Close" COLOR hwg_ColorC2N("0000FF")
   oBrw1:aarray := cnSQL
   oBrw1:AddColumn( HColumn():New( "Codigo", { |v,o| (v), o:aArray:Fields( "CODIGO" ):Value },"C",6,0,.F.,DT_CENTER ) )
   oBrw1:AddColumn( HColumn():New( "Nome",   { |v,o| (v), o:aArray:Fields( "NOME" ):Value }, "C",30,0,.T.,DT_CENTER,DT_RIGHT ) )
   oBrw1:aColumns[2]:lResizable := .F.
   oBrw1:bSkip     := { | o, nSkip | ADOSkipper( o:aArray, nSkip ) }
   oBrw1:bGotop    := { | o | o:aArray:MoveFirst() }
   oBrw1:bGobot    := { | o | o:aArray:MoveLast() }
   oBrw1:bEof      := { | o | o:nCurrent > o:aArray:RecordCount() }
   oBrw1:bBof      := { | o | o:nCurrent < 1 }
   oBrw1:bRcou     := { | o | o:aArray:RecordCount() }
   oBrw1:bRecno    := { | o | o:aArray:AbsolutePosition }
   obrw1:bRecnoLog := obrw1:bRecno
   oBrw1:bGOTO     := { | o, n | (o), o:aArray:Move( n - 1, 1 ) }

   ACTIVATE DIALOG oModDlg
Return Nil

FUNCTION ADOSkipper( cnSQL, nSkip )

   LOCAL nRec := cnSQL:AbsolutePosition()
      IF ! cnSQL:Eof()
         cnSQL:Move( nSkip )
         IF cnSQL:Eof()
            cnSQL:MoveLast()
         ENDIF
         IF cnSQL:Bof()
            cnSQL:MoveFirst()
         ENDIF
      ENDIF
      RETURN cnSQL:AbsolutePosition() - nRec


test.prg
-otest
gtwvw.hbc
hwgui.hbc
-gtwvg
-w0
-es0


test.zip
(577.69 KiB) Baixado 5 vezes


Depois eu conto o segredo que ninguém contava.
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: 14703
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 867 vezes

GTWVW,GTWVG,HWGUI,OOHG

Mensagempor JoséQuintas » 15 Set 2020 01:57

Este aqui é um pouco fora do normal pra compilar.

GTWVW + GTWVG + OOHG
SEM MULTITHREAD

#include "inkey.ch"
#include "hbgtinfo.ch"

PROCEDURE Main

   LOCAL nOpc

   SetMode( 30, 100 )
   SetColor( "W/B" )
   CLS
   DO WHILE .T.
      @ 1, 5 SAY hb_gtInfo( HB_GTI_VERSION )
      @ 5, 5 PROMPT " OOHG "
      @ 6, 5 PROMPT " WVG "
      MENU TO nOpc
      IF LastKey() == K_ESC
         EXIT
      ENDIF
      IF nOpc == 1
         Hello()
      ELSE
         TstWvg()
      ENDIF
   ENDDO

   RETURN

FUNCTION TstWVG()

   LOCAL nGT

   nGT := hb_gtSelect()
   hb_gtReload( "WVG" )
   Alert( hb_gtInfo( HB_GTI_VERSION ) )
   hb_gtSelect( nGT )

   RETURN Nil


test.zip
(577.69 KiB) Baixado 4 vezes
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: 14703
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 867 vezes

GTWVW,GTWVG,HWGUI,OOHG

Mensagempor JoséQuintas » 15 Set 2020 02:03

tela1.png


tela2.png


Como eu disse, NÃO É MULTITHREAD, então só permitiu uma chamar a outra, pelo menos nesse exemplo NÃO dá pra abrir as 3 de uma vez.
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: 14703
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 867 vezes

GTWVW,GTWVG,HWGUI,OOHG

Mensagempor JoséQuintas » 15 Set 2020 02:11

O outro abre uma de cada vez.

tela1.png
tela1.png (3.51 KiB) Visualizado 265 vezes


tela2.png
tela2.png (3.32 KiB) Visualizado 265 vezes


tela3.png


NÃO é multithread.
O exemplo foi feito pra abrir uma tela de cada vez.

Pois é... tantos anos o pessoal querendo isso... e é uma coisa extremamente simples.

E depois dizem que o pessoal de console fica querendo coisa que não pode ser feita kkkkkkkkkkkk
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: 14703
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 867 vezes

GTWVW,GTWVG,HWGUI,OOHG

Mensagempor JoséQuintas » 15 Set 2020 02:14

Vou dar só uma pista hoje....

Sabe aquilo que falam:

GT é coisa antiga

GT é coisa antiga

GT é coisa antiga

Sabe?

Então.... TODAS as LIBs são antigas kkkkkkkk
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: 14703
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 867 vezes

GTWVW,GTWVG,HWGUI,OOHG

Mensagempor Itamar M. Lins Jr. » 15 Set 2020 09:50

Ola!
Postou no grupo certo ?
A única visual mesmo ai é a Hwgui.

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

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 4626
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 161 vezes
Mens.Curtidas: 254 vezes

GTWVW,GTWVG,HWGUI,OOHG

Mensagempor JoséQuintas » 15 Set 2020 12:07

Então, vamos lá....
Até hoje, só ouvimos o NÃO PODE, NÃO PODE, NÃO PODE, NÃO PODE.

Pois bem.... PODE

Em OOHG:
Vai lá no fonte OOHG.CH e comenta REQUEST HB_GT_GUI_DEFAULT

Em HWGUI:
Vai lá no fonte HCWINDOW.PRG e comenta REQUEST HB_GT_GUI_DEFAULT

PRONTO. É SÓ ISSO.

As GUIs também tem GT.
Remova a delas e coloque a sua.
Simples assim.
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: 14703
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 867 vezes

GTWVW,GTWVG,HWGUI,OOHG

Mensagempor JoséQuintas » 15 Set 2020 12:40

Itamar M. Lins Jr. escreveu:Postou no grupo certo ?
A única visual mesmo ai é a Hwgui.


Então....
A OOHG também mencionada.

Tem o maindemooop.
Não compilei com ícones....

oohg1.png


quer gráficos?

oohg2.png


e quando imprimir (não o gráfico), quer imprimir pra onde?

oohg3.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: 14703
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 867 vezes

GTWVW,GTWVG,HWGUI,OOHG

Mensagempor JoséQuintas » 15 Set 2020 12:54

Então....

Tantos anos muitos tendo problema em combinar sua própria LIB com LIB gráfica....
Muitos perdendo noites de sono pra fazer isso...
E nunca ninguém mostrou isso.
É recomendar produto x, produto y, produto z....

É por isso que eu digo: o mundo xbase é phoda....

Ainda bem que eu só concordo com Harbour, e discordo das LIBs kkkkk
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: 14703
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 867 vezes

GTWVW,GTWVG,HWGUI,OOHG

Mensagempor JoséQuintas » 15 Set 2020 13:47

MUITA atenção nesta parte, é de extrema importância

   nGT := hb_gtSelect()
   hb_gtReload( "WVG" )
   Alert( hb_gtInfo( HB_GTI_VERSION ) )
   hb_gtSelect( nGT )


nGT := hb_gtSelect()
hb_gtSelect( nGT )

GTWVG e GTWVW são janelas GUI.
Uma janela GUI só se mantém se o programa fizer isso, e o programa só se mantém se a janela se mantiver.

hb_gtSelect() é a JANELA, com toda parte de teclado e mouse, que é o que mantém a janela ativa.
Se não fizer isso, a janela fecha, e o programa também.

Digamos que em GUI, é aquilo de janela pai e janela filho....
Aquilo do Windows de hWnd:Parent
Aquilo de colocar um button na janela, e o button fazer parte da janela...
Aquilo que não é coisa de console...
Então... aquilo... aquilo é isso: é uma variável que contém a janela, pra janela ficar presa a nova janela.
É igual deixar guardado, senão vém a faxineira e joga fora.

Então... tirando teclado e mouse da janela anterior... nada mais segura a janela, a não ser que crie uma variável que sirva de prendedor.
É um detalhe simples, mas SE USAR O RECURSO, não significa que precise usar, tem que lembrar disso.

O mais interessante:
Justamente a GT default das LIBs GUI é pra isso.
Obrigatoriamente precisa entrar uma GT, porque é justamente essa GT que segura todas as outras janelas GUI.
Pode ser a tal GTGUI, poderia ser WVG, WVW, WVT, a nativa do Harbour, até mesmo console.
A diferença é: se entrar a janela console como default, você SEMPRE vai ter uma janela DOS aberta além da janela GUI.
É pra isso que serve essa GT de carga das LIBs gráficas, pra segurar todo resto, mas sem ficar visível.

Porque estou dizendo tudo isso?
Porque se você remover essa GT da HWGUI, por exemplo, e compilar um aplicativo HWGUI...

a) Pode acontecer de aparecer duas janelas, a console e a GUI
b) Pode acontecer do programa fechar sozinho, porque não tem a Main() "segurando" tudo
c) Também pode acontecer do programa ficar zumbi. sem tela, apenas aparecendo no gerenciador de tarefas

É sempre bom saber dessas coisas quando a intenção é misturar tudo, ou trabalhar diferente do normal.

Então, perca bastante tempo com a criação da primeira janela, ou das primeiras janelas.
Faça tudo que é tipo de teste, que é pra ficar "craque" com o que pode acontecer.
Feito isso, daí pra frente é só alegria, porque vai fazer sempre a mesma coisa.

Ah, sim.. faltou dizer:
Porque as LIBs adicionam isso obrigatoriamente?

Pro usuário não precisar indicar em cada projeto.
hbmk2 programahwgui.prg -gtgui

Ou pro usuário não indicar gt errada (ou usar a default) e ficar com uma tela de console além da gui
hbmk2 programahwgui.prg -gtwin

E finalmente, mudando de assunto, mas dentro do mesmo assunto:
multithread
A WVT e WVG permitem carregar "novas GTs" para os novos processos, totalmente independentes, como EXEs separados.
Por isso elas são bem flexíveis, porque nada mexe com elas, e elas não mexem com ninguém.

Mas... voltando ao assunto anterior, porque faltou uma coisa:
A GTGUI não faz falta para as LIBs gráficas?
Precisa existir uma "Main()" invisível, pode ser qualquer GT invisível, apenas a default costuma ser a GTGUI, porque deve ser bem pequena, por não precisar dos recursos extras de teclado/mouse.
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: 14703
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 867 vezes

GTWVW,GTWVG,HWGUI,OOHG

Mensagempor JoséQuintas » 15 Set 2020 14:04

Acréscimo pra mistura:

NÃO CONFUNDA MULTITHREAD COM USO DE VÁRIAS JANELAS

Geralmente a janela GT ou digamos console, ela segura o teclado e mouse com ela.
Você abrir uma nova janela, e transferir teclado e mouse pra ela, significa que a outra vai ficar travada esperando a atual fechar. (ou como já mencionei, tem o caso da anterior fechar sozinha pelo mesmo motivo).
No caso da GTWVG tem a multithread, ou a wvgcrt() que é específica pra criar janelas adicionais modal ou não modal - travando ou não a janela anterior.

Também é bom saber disso, antes de misturar janelas, porque em GUI não existe sequência definida.

NÃO SEI, precisa testar, de repente a partir da hwgui você quer abrir duas janelas da GTWVW ao mesmo tempo, e uma delas acabar travando. Pode ser que fique limitado a abrir uma de cada vez.
Tudo depende de testes, mas esse conceito sobre GTs pode ajudar a explicar o porquê as coisas acontecem, e como contornar a situação. SE por acaso acontecer da GTWVW travar com duas janelas, limita a uma e problema resolvido.

Quais os limites?
Não faço a menor idéia, é ir testando, acompanhar o comportamento, e ver o que dá 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: 14703
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 867 vezes

GTWVW,GTWVG,HWGUI,OOHG

Mensagempor MSDN » 16 Set 2020 11:53

Quintas, com todo respeito, até agora tudo isso que vc postou não vai ter relevância para alguém do mundo xBase que vai fazer um sistema comercial, todos esses detalhes técnicos não fazem a menor diferença, é mais uma vontade sua de mostrar que sua opinião é a mais certa, fazendo uma analogia, seria como o desenvolvedor de uma empresa de software chegar no cliente e ficar falando que o sistema dele usa MVC, Rest, que tem só 500k, que é feito em C++ com Java misturado com Assembler....o cliente só quer um sistema visualmente prático e funcional, o que nos remete a usar API gráfica do Windows e que faça as contas certinho, e ponto !
MSDN
Usuário Nível 4

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

GTWVW,GTWVG,HWGUI,OOHG

Mensagempor JoséQuintas » 16 Set 2020 12:55

MSDN escreveu: tudo isso que vc postou não vai ter relevância para alguém do mundo xBase que vai fazer um sistema comercial, todos esses detalhes técnicos não fazem a menor diferença, é mais uma vontade sua de mostrar que sua opinião é a mais certa


Talvez não tenha pensado direito.
Acho que isso interessa pra TODOS que ainda não usam GUI.
Mostrei um ponto de partida muito válido, e talvez muito mais prático.
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: 14703
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 867 vezes

Próximo



Retornar para Outras Bibliotecas Visuais e IDEs

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online 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
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro