Clipper On Line • Ver Tópico - Iniciando com HWGUI

Iniciando com HWGUI

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Iniciando com HWGUI

Mensagempor JoséQuintas » 20 Set 2020 12:00

Tenho lá meu Main() oculto.

acrescentei no fonte

ANNOUNCE HB_GTSYS
REQUEST HB_GT_WVG_DEFAULT


Compilei, testei, à primeira vista tudo ok.
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: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Iniciando com HWGUI

Mensagempor JoséQuintas » 20 Set 2020 12:46

Por enquanto sem ambiente especial:

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

fonte: pteshwgui.prg
#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
-ojpahwgui
-hblib
hwgui.hbc
*.prg


No meu menu principal, acrescentei uma opção
            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:/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.
        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, 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: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Iniciando com HWGUI

Mensagempor JoséQuintas » 20 Set 2020 12:52

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, 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: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Iniciando com HWGUI

Mensagempor JoséQuintas » 20 Set 2020 12:59

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, 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: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Iniciando com HWGUI

Mensagempor JoséQuintas » 20 Set 2020 13:10

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.

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, 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: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Iniciando com HWGUI

Mensagempor JoséQuintas » 20 Set 2020 13:32

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, 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: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Iniciando com HWGUI

Mensagempor Itamar M. Lins Jr. » 20 Set 2020 13:39

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Iniciando com HWGUI

Mensagempor Itamar M. Lins Jr. » 20 Set 2020 14:36

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


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

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Iniciando com HWGUI

Mensagempor JoséQuintas » 20 Set 2020 15:05

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.
   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
-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:
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, 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: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Iniciando com HWGUI

Mensagempor JoséQuintas » 20 Set 2020 15:10

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, 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: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Iniciando com HWGUI

Mensagempor JoséQuintas » 20 Set 2020 15:14

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, 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: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Iniciando com HWGUI

Mensagempor JoséQuintas » 20 Set 2020 15:23

Acho que estou quase lá....

        ACTIVATE DIALOG oForm


        ACTIVATE DIALOG oForm NOMODAL


Assim não tem dialog.
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: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Iniciando com HWGUI

Mensagempor JoséQuintas » 20 Set 2020 15:36

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, 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: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Iniciando com HWGUI

Mensagempor Itamar M. Lins Jr. » 20 Set 2020 15:39

Ola!
NOMODAL usamos o tempo todo, para mostrar avisos, BARRA DE PROGRESSO... como não funciona ?
Olhe o fonte da hprogres.prg
   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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Iniciando com HWGUI

Mensagempor JoséQuintas » 20 Set 2020 15:51

Teste simples:


#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, 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: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Próximo



Retornar para HwGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online 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