Iniciando com HWGUI

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Iniciando com HWGUI

Mensagem por JoséQuintas »

Tenho lá meu Main() oculto.

acrescentei no fonte

Código: Selecionar todos

ANNOUNCE HB_GTSYS
REQUEST HB_GT_WVG_DEFAULT
Compilei, testei, à primeira vista tudo ok.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Iniciando com HWGUI

Mensagem por JoséQuintas »

Por enquanto sem ambiente especial:

Criei uma pasta para os fontes hwgui, criei o projeto, e vou usar um fonte teste.

fonte: pteshwgui.prg

Código: Selecionar todos

#include "windows.ch"
#include "guilib.ch"

PROCEDURE pTesHWGUI()
   LOCAL oForm, oFont
        Local nCombo := 1
        Local cCombo := 'Four'
        Local xCombo := 'Test'
        Local aItems := {'First', 'Second', 'Third', 'Four'}
        Local cEdit  := Space(50)
        Local oCombo1, oCombo2, oCombo3, oCombo4, oCombo5, oCombo6

        PREPARE FONT oFont NAME "Courier New" WIDTH 0 HEIGHT -11

        INIT DIALOG oForm CLIPPER NOEXIT TITLE "ComboBox Demo";
             FONT oFont ;
             AT 0, 0 SIZE 700, 425 ;
             STYLE DS_CENTER + WS_VISIBLE + WS_POPUP + WS_VISIBLE + WS_CAPTION + WS_SYSMENU

            @ 20, 20 GET COMBOBOX oCombo1 VAR nCombo ITEMS aItems SIZE 100, 150
            @ 20, 50 GET COMBOBOX oCombo2 VAR cCombo ITEMS aItems SIZE 100, 150 TEXT
            @ 20, 80 GET COMBOBOX oCombo3 VAR xCombo ITEMS aItems SIZE 100, 150 EDIT TOOLTIP 'Type any thing here'

            @ 20,110 COMBOBOX oCombo4 ITEMS aItems SIZE 100, 150
            @ 20,140 COMBOBOX oCombo5 ITEMS aItems SIZE 100, 150 TEXT
            @ 20,170 COMBOBOX oCombo6 ITEMS aItems SIZE 100, 150 EDIT

            @ 20,200 GET cEdit SIZE 150,23

            @ 380, 395 BUTTON 'Test'    SIZE 75,25 ON CLICK {|| xCombo := 'Temp', oCombo3:refresh(), nCombo := 2, oCombo1:refresh(), oCombo2:SetItem(3), oCombo4:SetItem(3), oCombo5:value := 'Third', oCombo5:refresh(), oCombo6:SetItem(2) }
            @ 460, 395 BUTTON 'Combo 1' SIZE 75,25 ON CLICK {|| hwg_Msginfo(str(nCombo)) }
            @ 540, 395 BUTTON 'Combo 2' SIZE 75,25 ON CLICK {|| hwg_Msginfo(cCombo, xCombo) }
            @ 620, 395 BUTTON 'Close'   SIZE 75,25 ON CLICK {|| oForm:Close() }

        ACTIVATE DIALOG oForm
Return
meu projeto jpahwgui.hbp

Código: Selecionar todos

-ojpahwgui
-hblib
hwgui.hbc
*.prg
No meu menu principal, acrescentei uma opção

Código: Selecionar todos

            MenuOption( "Módulo hwgui",              "PTESHWGUI", { || pteshwgui() } )
O codeblock só serve pra puxar a rotina hwgui pra dentro do JPA.EXE

Nada mais alterado.
Vou na pasta hwgui: C <ENTER>
Vou na pasta do meu aplicativo C <ENTER>

NÃO alterei mais nada, então, normal o erro:

Código: Selecionar todos

c:/temp/jpa_menu.o:jpa_menu.c:(.data+0x388): undefined reference to `HB_FUN_PTESHWGUI'
Agora, lógico, preciso acrescentar a minha LIB e HWGUI, e a pasta da minha lib

C hwgui.hbc -ljpahwgui -Lhwgui <ENTER>

Pronto, um novo EXE.

Código: Selecionar todos

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
  21261824 ->   6667264   31.36%    win32/pe     jpa.exe                                                                                                       
hwgui.png
hwgui2.png
Esse é um ponto de partida para o restante.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Iniciando com HWGUI

Mensagem por JoséQuintas »

Uma necessidade aqui:

A dialog acaba sendo MODAL.
NÃO sei se vai ser possível, talvez aqui precise conversar com o desenvolvedor da HWGUI, pra ver se dá pra criar DIALOGs NÃO MODAL.
Isso porque a janela que chama a DIALOG NÃO é uma WINDOW da HWGUI.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Iniciando com HWGUI

Mensagem por JoséQuintas »

Opa, mostrei cedo demais.
hwgui3.png
Meu menu cria automático a janela para o módulo.
O aplicativo está totalmente livre, apenas tem uma janela a mais.
A janela a mais é porque ele criou, mas não precisava.....
Estamos chegando lá...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Iniciando com HWGUI

Mensagem por JoséQuintas »

Agora é conversar com o desenvolvedor.
Consegui o que eu queria, janelas à vontade, sem limites, mas....
Módulos em hwgui precisam ser fechados na ordem em que foram abertos.
jpa.png
Apenas coloquei tratamento diferenciado pra módulo HWGUI.
Aquilo de travar a janela que chama a dialog, tudo bem, é uma janela oculta mesmo, o usuário não vê nada.

Código: Selecionar todos

FUNCTION DoPrg( cModule, cTitulo, p1, p2, p3 )

   LOCAL mHrInic //, oStatusbar
   PRIVATE m_Prog

   m_Prog := cModule
   hb_gtReload( "WVG" )
   AppInitSets( ! "HWGUI" $ Upper( cModule ) )
   HB_GtInfo( HB_GTI_WINTITLE, cTitulo )
   IF ! ( "HWGUI" $ Upper( cModule ) )
      SetColor( SetColorNormal() )
      CLS
      SayTitulo( cTitulo )
      @ MaxRow() - 2, 0 TO MaxRow() - 2, MaxCol() COLOR SetColorTraco()
      mHrInic := Time()
   ENDIF
   Do( cModule, p1, p2, p3 )
   IF ! ( "HWGUI" $ Upper( cModule ) )
      LogDeUso( mHrInic, cModule )
   ENDIF
   //  HB_SYMBOL_UNUSED( oStatusbar )

   RETURN NIL
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Iniciando com HWGUI

Mensagem por JoséQuintas »

Tem como definir uma janela main hwgui oculta?
Talvez se as dialogs partirem dela não fiquem presas à ordem.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Iniciando com HWGUI

Mensagem por Itamar M. Lins Jr. »

Ola!
Meu aplicativo 90% só tem dois níveis. Acredito que de todo mundo é assim.
A Window MAIN e a DIALOG. Depois pode eventualmente ter mais outro nível, botão que chama uma DIALOG com opções de impressão.
Lembre-se que a DIALOG pode ser nomodal. Fica solta, sem ter uma janela de origem.
Veja o DESIGNER como ele é feito, as JANELAS ficam SOLTAS. Não obedece essa ordem para fechar.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Iniciando com HWGUI

Mensagem por Itamar M. Lins Jr. »

Ola!
Esconder um janela.
Objeto : HIDE() //Se tiver essa opção.

Código: Selecionar todos

oWnd:Hide()
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Iniciando com HWGUI

Mensagem por JoséQuintas »

Não adianta, não dá certo.

Tentei com oform:activate(.f.)

Tudo bem, vai ficar assim até talvez o desenvolvedor dar uma resposta.

Tomei um baile muito grande pra descobrir um problema que fazia travar tudo.

Código: Selecionar todos

   hb_gtReload( "WVG" )
   AppInitSets()
Inverti essas duas linhas e travava tudo.
Meio normal, tudo tem a ver com a janela ativa.
Foi o GIT que me salvou, porque conferi as mudanças.
Não funcionava mais nem o jeito anterior kkkk

Mas ok, definido o jeito de trabalhar.

hwgui\*.* vão ser meus fontes hwgui, transformados em LIB

Código: Selecionar todos

-o${hb_addons}/josequintas/lib/${hb_plat}/${hb_comp}/jpahwgui
-hblib
-hbx=${hb_addons}/josequintas/jpahwgui
hwgui.hbc
-w3 -es2
*.prg
Vou desviar a LIB pra pasta addons/josequintas

No projeto principal:

Código: Selecionar todos

hwgui/jpahwgui.hbp
-ljpahwgui
hwgui.hbc
Coloquei a outra pasta como subprojeto, assim compila o que eu mexer lá, já criando uma nova LIB
E compila o projeto geral juntando essa LIB, e as da hwgui

Pronto.
A partir de agora, é igual todo mundo que usa hwgui.
A única diferença é que a entrada é gtwvg.
Se eu descobrir como fazer a dialog independente, melhor ainda.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Iniciando com HWGUI

Mensagem por JoséQuintas »

Agora é liberar alguma coisa pro usuário brincar.

Precisa ver o comportamento do lado do cliente, incluindo uso via terminal service.

Isso ok, é começar a colocar a mão na massa.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Iniciando com HWGUI

Mensagem por JoséQuintas »

Itamar M. Lins Jr. escreveu:Lembre-se que a DIALOG pode ser nomodal. Fica solta, sem ter uma janela de origem.
Veja o DESIGNER como ele é feito, as JANELAS ficam SOLTAS. Não obedece essa ordem para fechar.
Talvez ela fique como container da Main, talvez não.
Seria interessante descobrir isso.

Nessa parte, nada a ver com GTWVG, mas sim com começar o aplicativo sem janela Main(), mas com uma ou duas dialogs.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Iniciando com HWGUI

Mensagem por JoséQuintas »

Acho que estou quase lá....

Código: Selecionar todos

        ACTIVATE DIALOG oForm

Código: Selecionar todos

        ACTIVATE DIALOG oForm NOMODAL
Assim não tem dialog.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Iniciando com HWGUI

Mensagem por JoséQuintas »

Nada feito.

Com NOMODAL a dialog não existe.
Acho que ela precisa ficar presa a alguma coisa.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Iniciando com HWGUI

Mensagem por Itamar M. Lins Jr. »

Ola!
NOMODAL usamos o tempo todo, para mostrar avisos, BARRA DE PROGRESSO... como não funciona ?
Olhe o fonte da hprogres.prg

Código: Selecionar todos

   INIT DIALOG ::oParent TITLE cTitle       ;
      At nLeft, nTop SIZE nWidth, nHeight   ;
      STYLE WS_POPUP + WS_VISIBLE + WS_CAPTION + WS_SYSMENU + WS_SIZEBOX + iif( nTop == 0, DS_CENTER, 0 ) + DS_SYSMODAL + MB_USERICON

   @ ::nLeft, nTop + 5 SAY ::LabelBox CAPTION iif( Empty( lPercent ), "", "%" )  SIZE ::nWidth, 19 ;
      STYLE SS_CENTER

   IF bExit != Nil
      ::oParent:bDestroy := bExit
   ENDIF

   ACTIVATE DIALOG ::oParent NOMODAL
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Iniciando com HWGUI

Mensagem por JoséQuintas »

Teste simples:

Código: Selecionar todos


#include "hwgui.ch"

FUNCTION Main()
   LOCAL oFont, oForm
        Local nCombo := 1
        Local cCombo := 'Four'
        Local xCombo := 'Test'
        Local aItems := {'First', 'Second', 'Third', 'Four'}
        Local cEdit  := Space(50)
        Local oCombo1, oCombo2, oCombo3, oCombo4, oCombo5, oCombo6

        PREPARE FONT oFont NAME "Courier New" WIDTH 0 HEIGHT -11

        INIT DIALOG oForm CLIPPER NOEXIT TITLE "ComboBox Demo";
             FONT oFont ;
             AT 0, 0 SIZE 700, 425 ;
             STYLE DS_CENTER + WS_VISIBLE + WS_POPUP + WS_VISIBLE + WS_CAPTION + WS_SYSMENU

            @ 20, 20 GET COMBOBOX oCombo1 VAR nCombo ITEMS aItems SIZE 100, 150
            @ 20, 50 GET COMBOBOX oCombo2 VAR cCombo ITEMS aItems SIZE 100, 150 TEXT
            @ 20, 80 GET COMBOBOX oCombo3 VAR xCombo ITEMS aItems SIZE 100, 150 EDIT TOOLTIP 'Type any thing here'

            @ 20,110 COMBOBOX oCombo4 ITEMS aItems SIZE 100, 150
            @ 20,140 COMBOBOX oCombo5 ITEMS aItems SIZE 100, 150 TEXT
            @ 20,170 COMBOBOX oCombo6 ITEMS aItems SIZE 100, 150 EDIT

            @ 20,200 GET cEdit SIZE 150,23

            @ 380, 395 BUTTON 'Test'    SIZE 75,25 ON CLICK {|| xCombo := 'Temp', oCombo3:refresh(), nCombo := 2, oCombo1:refresh(), oCombo2:SetItem(3), oCombo4:SetItem(3), oCombo5:value := 'Third', oCombo5:refresh(), oCombo6:SetItem(2) }
            @ 460, 395 BUTTON 'Combo 1' SIZE 75,25 ON CLICK {|| hwg_Msginfo(str(nCombo)) }
            @ 540, 395 BUTTON 'Combo 2' SIZE 75,25 ON CLICK {|| hwg_Msginfo(cCombo, xCombo) }
            @ 620, 395 BUTTON 'Close'   SIZE 75,25 ON CLICK {|| oForm:Close() }

        ACTIVATE DIALOG oForm NOMODAL
Return oForm
Tente uma dialog sozinha, sem mais nada.
com NOMODAL, nada feito.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder