exemplo 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

exemplo hwgui

Mensagem por JoséQuintas »

Pra quem não viu ou não tem acesso, acrescentei em hwgui/test/mixed

É o jeito que vou usar.

Exemplo simples, tô pegando o jeito ainda.....

Mistura LIBs mas não mistura fontes de LIBs.
test.zip
(668.74 KiB) Baixado 98 vezes
nota: EXE não assinado
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

exemplo hwgui

Mensagem por JoséQuintas »

Pra facilitar quem só quer olhar:

menu.prg

Código: Selecionar todos

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

PROCEDURE Main

   hb_ThreadStart( { || menu() } )
   hb_ThreadWaitForAll()

   RETURN

FUNCTION Menu()

   LOCAL nOpc

   SetMode(25,80)
   CLS
   DO WHILE .T.
      @ 2, 5         PROMPT "Exit"
      @ Row() + 1, 5 PROMPT "Show gt name"
      @ Row() + 1, 5 PROMPT "this menu on new thread"
      @ Row() + 1, 5 PROMPT "Empty dialog"
      @ Row() + 1, 5 PROMPT "Empty dialog on new thread"
      @ 1, 3 TO Row() + 1, 40
      MENU TO nOpc
      DO CASE
      CASE nOpc == 1 .OR. LastKey() == K_ESC
         EXIT
      CASE nOpc == 2
         Alert( hb_gtInfo( HB_GTI_VERSION ) )
      CASE nOpc == 3
         hb_ThreadStart( { || hb_gtReload( "WVG" ), menu() } )
      CASE nOpc == 4
         DlgEmpty()
      CASE nOpc == 5
         hb_ThreadStart( { || DlgEmpty() } )
      ENDCASE
   ENDDO
   CLS

   RETURN Nil
dlgempty.prg

Código: Selecionar todos

#include "hwgui.ch"

FUNCTION DlgEmpty()

   LOCAL oDlg

   INIT DIALOG oDlg TITLE "test" ;
      AT 190, 10 SIZE 360, 300

   ACTIVATE DIALOG oDlg

   RETURN Nil
test.hbp

Código: Selecionar todos

skip={!allwin}

-otest
-w3
-es2
-gui
-mt

../../hwgui.hbc

gtwvg.hbc

menu.prg
dlgempty.prg
Nota:
requer alteração em gtwvg.hbc
remover esta linha

Código: Selecionar todos

headers=hbgtwvg.ch wvgparts.ch wvtwin.ch
essa linha acrescenta esses arquivos ch em tudo que é fonte, é removê-la e colocar #include aonde precisar.
A compilação -w3 -es2 acaba acusando nomes repetidos referentes à API Windows, porque hwgui também tem API Windows.
Retirando esse acréscimo automático, se precisar em algum fonte gtwvg precisa colocar lá o #include, igual toda e qualquer lib.
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

exemplo hwgui

Mensagem por Itamar M. Lins Jr. »

Olá!
No Linux via WINE
Screenshot_20230117_120716.png
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

exemplo hwgui

Mensagem por JoséQuintas »

Legal.
Faz o teste em Linux gerando hwgui com -DMT_EXPERIMENTAL -DHB_NO_GTGUI e removendo gtwvg.hbc
Vai entrar a GUI default do Linux no lugar da GTWVG.
Teoricamente vai ter o mesmo resultado.

Só não esqueça depois de gerar novamente hwgui sem esses parâmetros, pra evitar surpresas.
Ou teste, pra ver o que acontece, pode ser que hwgui funcione normalmente com a GUI linux.

Com -gui no HBP ou GUI=YES no HBC é usada a GUI default do Harbour, pra Windows ou Linux.
Até hoje não a diferença exata disso pra -gtgui.
Só sei que dá diferença, já que no Windows entra como default a GTWVT e não a GTGUI.
No Linux parece ser a GTK, mesma LIB da hwgui, mas não sei se afeta alguma coisa.

Pelo menos as GUIs defaults são multithread.
Basicamente podem ter mais de um ponto de entrada, um pra cada thread, o que parece que a GTGUI não tem.
E teoricamente, sem multithread, são equivalentes, vão ser o ponto de entrada.
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

exemplo hwgui

Mensagem por JoséQuintas »

Minha idéia é rechear esse exemplo com uma espécie de tutorial.

Próximo exemplo útil, dialog com "gets".
No aplicativo tem muita tela que só usa isso.
Já serviria pra substituir algumas partes.

O que não dá pra fugir é um browse, porque praticamente toda tela usa um.

Em seguida, tela de cadastro com botões.
Isso já substitui muitas telas.

Meio que como conclusão, tela múltipla, usando abas.

Só depois desses, telas com opções de escolha, e outros.

No meu modo de ver, não me interessa ver recursos da hwgui, me interessa fazer o aplicativo em hwgui.
Por isso, exemplo de cada recurso acaba sendo meio que inútil, porque não leva a lugar nenhum, só deixa o perdido mais perdido 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
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

exemplo hwgui

Mensagem por Itamar M. Lins Jr. »

Olá!
Por isso, exemplo de cada recurso acaba sendo meio que inútil, porque não leva a lugar nenhum, só deixa o perdido mais perdido ainda.
Já pensei assim. Lá em 1990 sei lá... Quando fiquei estudando isso...
Os exemplos são fáceis de entender.
Quem vai programar agora não vê dificuldade, mas quem usava a técnica do "DO WHILE", ... GET READ" tela com limite 80x24 já vê dificuldade.
A pessoa no caso fica perdida porque "JÁ SABE" o que quer, mas não sabe como fazer. Não compreende que tem que dar adeus a essa parte de telas. Hoje qualquer aplicativo tem uma pessoa das telas, outra para BD, outra para lógica do conjunto... E nós dinossauros fazíamos tudo isso sozinho.(continuo fazendo)

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
carlaoonline
Usuário Nível 3
Usuário Nível 3
Mensagens: 190
Registrado em: 24 Ago 2014 22:38
Localização: Porto Alegre-RS

exemplo hwgui

Mensagem por carlaoonline »

entrei no https://chat.openai.com/chat

e solicitei isso:
Crie um código de programação em Harbour com HwGui que apresenta um combobox listando como opções os campos do arquivo cidades.dbf e após a escolha deve mostrar uma mensagem ao usuário informando o conteúdo desse campo no arquivo.
Me retornou isso:

Código: Selecionar todos

#include <hwgui.ch>
#include <dbf.ch>

PROCEDURE Main()

   HwGui_Open()
   HwGui_SetTitle("Selecione o campo")

   LOCAL cComboBox := HwGui_AddComboBox()
   LOCAL nFields := 0
   LOCAL aFields := {}
   LOCAL cFieldValue := ""

   USE cidades
   nFields := FCOUNT()
   FOR i := 1 TO nFields
      aFields := aAdd(aFields, FIELDNAME(i))
      HwGui_AddComboBoxItem(cComboBox, FIELDNAME(i))
   NEXT

   HwGui_Show()

   LOCAL cSelection := HwGui_GetComboBoxSelection(cComboBox)
   SELECT cidades
   cFieldValue := EVAL(cSelection)
   HwGui_Info("Valor do campo '" + cSelection + "' é: " + cFieldValue)

   HwGui_Close()
   
ENDPROC


Perguntei também:


Como criar um app em Harbour com HwGui para rodar em Android?


Saiu isso:
Para criar um aplicativo para Android usando Harbour e HwGui, é necessário seguir alguns passos:

Instale o Android SDK e configura-o no seu ambiente de desenvolvimento.

Instale o Harbour e configura-o para compilar para o sistema operacional Android.

Escreva o código do aplicativo usando Harbour e HwGui, seguindo as regras de programação para dispositivos móveis.

Compile o código fonte do aplicativo usando o Harbour e o Android SDK. Isso gera um arquivo executável para o sistema operacional Android.

Crie um arquivo "AndroidManifest.xml" para descrever as características do aplicativo, como as permissões necessárias e as configurações de tela.

Use o ferramenta "Android Asset Packaging Tool (AAPT)" para empacotar o arquivo executável e os arquivos de recursos do aplicativo.

Use o ferramenta "Android Debug Bridge (ADB)" para instalar o aplicativo no dispositivo Android ou emulador.

Teste e depure o aplicativo usando o Android SDK.

Este é um resumo geral dos passos necessários para criar um aplicativo para Android usando Harbour e HwGui. É importante ter conhecimento sobre programação em Harbour, HwGui e também sobre o desenvolvimento de aplicativos para Android. Além disso, é recomendado seguir a documentação e tutorial oficial das ferramentas utilizadas no processo.

E por último arrisquei isso:

Como seria um exemplo de código em Harbour com HwGui para Android que abriria o maps com a localização do Coliseu de Roma?

Saiu isso:

Código: Selecionar todos

#include <hwgui.ch>
#include <android.ch>

PROCEDURE Main()

   HwGui_Open()
   HwGui_SetTitle("Coliseu de Roma")

   LOCAL cUri := "geo:41.8902,12.4922?q=41.8902,12.4922(Coliseu de Roma)"
   Android_OpenUri(cUri)

   HwGui_Close()
   
ENDPROC

com essa explicação:
Esse exemplo mostra como abrir o Maps do Android com a localização do Coliseu de Roma. Ele usa a função Android_OpenUri() para abrir a URI "geo:41.8902,12.4922?q=41.8902,12.4922(Coliseu de Roma)" que é uma URI do tipo geolocalização. Essa URI é composta pelas coordenadas geográficas do Coliseu de Roma (41.8902,12.4922) e também inclui a informação "Coliseu de Roma" como nome da localização. A função HwGui_Close() é usada para fechar a janela e finalizar o programa.

Esse código é apenas um exemplo básico e para que funcione é necessário seguir os passos para compilação e instalação do app que citei no meu comentário anterior. E também é importante que o dispositivo Android esteja conectado à internet para que possa abrir o Maps.
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

exemplo hwgui

Mensagem por Itamar M. Lins Jr. »

Olá!
me interessa fazer o aplicativo em hwgui.
O que não falta é aplicativo em Hwgui para vc ver.

MAS SEMPRE SERÁ DIFERENTE DO SEU!

Quando vc fizer... e se vc conseguir MIGRAR seu ERP para Hwgui, SERÁ DIFERENTE de TODOS !
Vc tem suas particularidades. CADA UM TEM ! Isso depois de MUITO tempo de programação de escutar muito; "seu programa é uma merd..."(já escutei) e por ai vai.
Sua VISÃO do CONJUNTO dificulta LARGAR de mão tbrowse, etc... Pq em muitos casos é melhor o antigo,"quando usamos o BASICÃO" mas o antigo não faz nem a metade que o novo faz.

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

exemplo hwgui

Mensagem por JoséQuintas »

Itamar M. Lins Jr. escreveu:Sua VISÃO do CONJUNTO dificulta LARGAR de mão tbrowse, etc... Pq em muitos casos é melhor o antigo,"quando usamos o BASICÃO" mas o antigo não faz nem a metade que o novo faz.
Pois é... você sempre volta na questão de console....
E sem nem saber direito o que se passa em Windows GUI.
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

exemplo hwgui

Mensagem por JoséQuintas »

Legal o que a inteligência artificial fez.

Acho que o Itamar nem percebeu.

Não é o que hwgui faz, é o que deveria fazer kkkkk
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

exemplo hwgui

Mensagem por Itamar M. Lins Jr. »

Olá!
E sem nem saber direito o que se passa em Windows GUI.
E daí ? Na sua opinião... Mesmo que fosse verdade e não é, não muda nada. WVG/HB34 está parada e ponto final. WVG com BUG(provavelmente)
Não é o que hwgui faz, é o que deveria fazer kkkkk
Deveria fazer o quê ? Melhor que a WVG é, melhor que qualquer uma, no estilo WVG.
Pq é melhor ? Pq faz uso dos controles do OS. Ah, mas a WVG, assim, assado...Vai voltar as mesmas conversas de anos atrás.

É um caso de estudo seu comportamento: Eu quero, mas eu não gosto, mas é deficiente...

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

exemplo hwgui

Mensagem por JoséQuintas »

Itamar M. Lins Jr. escreveu:Deveria fazer o quê ? Melhor que a WVG é, melhor que qualquer uma, no estilo WVG.
Pq é melhor ? Pq faz uso dos controles do OS. Ah, mas a WVG, assim, assado...Vai voltar as mesmas conversas de anos atrás.
É um caso de estudo seu comportamento: Eu quero, mas eu não gosto, mas é deficiente...
É você que precisa de revisão, seu cérebro parou no tempo.

Tem suas idéias na sua cabeça e não sai delas.

Pelo jeito a WVG na sua cabeça é uma delas.
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

exemplo hwgui

Mensagem por Itamar M. Lins Jr. »

Olá!
Não é o que hwgui faz, é o que deveria fazer kkkkk
O que a Hwgui deveria fazer ?
Eu sei de uma "cacetada" de coisa que deveria ter ou fazer. Eu sei pq uso ela há anos. Desde a versão 0.1
Sei das deficiências da Minigui, OOHG... Mas sei que se for colocar na balança, qualquer uma dessas, é melhor que qualquer GTXXX.

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

exemplo hwgui

Mensagem por JoséQuintas »

Não viu o assunto do tópico não?

É justamente início de exemplos pra migrar pra HWGUI de forma simples.
Ou precisa desenhar?

Ou acha que porque quebrou a cabeça, todo mundo precisa quebrar também?
É o que parece.
Isso explica a falta de exemplos na hwgui.

Tem um lá legal, de ADO, postei aqui no fórum, e tá na hwgui com o nome do Itamar kkkkkkk
Deixa assim, que assim posso pentelhar sempre sobre isso kkkkkk
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

exemplo hwgui

Mensagem por JoséQuintas »

Itamar M. Lins Jr. escreveu:O que a Hwgui deveria fazer ?
Eu sei de uma "cacetada" de coisa que deveria ter ou fazer. Eu sei pq uso ela há anos. Desde a versão 0.1
Sei das deficiências da Minigui, OOHG... Mas sei que se for colocar na balança, qualquer uma dessas, é melhor que qualquer GTXXX.
De novo GT?
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