Criando um gerador de aplicativos para Harbour

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

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

Criando um gerador de aplicativos para Harbour

Mensagem por JoséQuintas »

Ao criar canais, acaba ficando fora do fórum.
E pior que isso, ficar fora de controle
Uma coisa é programador internacional, e outra é programador nacional.
É capaz de perguntarem porque digita harbour<enter> e o harbour não aparece.
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/
mmarcondes
Usuário Nível 2
Usuário Nível 2
Mensagens: 81
Registrado em: 02 Jul 2021 15:06
Localização: witmarsum

Criando um gerador de aplicativos para Harbour

Mensagem por mmarcondes »

José, creio que você não está tendo uma visão mais ampla sobre programação e a forma como as pessoas estão interagindo nos dias de hoje. Eu também sou do tempo de ir na casa do amigo levando uma caixa de disquetes 5 1/4" (formatados) para copiar ou até levar código fonte, de buscar livros técnicos para conseguir ter acesso a um pouco mais de conhecimento, mesmo que fosse em inglês, mas hoje temos muitas possibilidades que expandem essa troca de conhecimento e fomenta ideias, infelizmente o Harbour ainda está de fora desse contexto.
Uma coisa que salta aos olhos hoje em dia, as principais linguagens de programação, usadas para criar software para celular, tablet, tv, relógio, carro, geladeira, web, desktop, etc, são todas grátis, não precisa pagar nada, o único comércio que existe é o de venda de cursos (conhecimento mais avançado), e compra quem quer, aliás, os preços são bem acessíveis, nós (creio que a maioria), nasceu e cresceu sabendo que tudo o que dizia respeito a software tinha que ser pirata, menos os sistemas que a gente fazia, eu desde que sai do Clipper, comecei a ver rapidamente que as coisas mudaram (claro, as bases são as mesmas), mas a forma é outra !
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Criando um gerador de aplicativos para Harbour

Mensagem por JoséQuintas »

Voltando ao gerador:

basicamente é criar um modelo funcional, e a geração vai seguir esse modelo.

Mas melhor que isso, é apenas executar, sem nem precisar criar fontes.
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

Criando um gerador de aplicativos para Harbour

Mensagem por JoséQuintas »

mmarcondes escreveu:José, creio que você não está tendo uma visão mais ampla sobre programação e a forma como as pessoas estão interagindo nos dias de hoje
Tenho sim.

Minha previsão é de que demore UMA hora pra ter um gerador funcionando.
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

Criando um gerador de aplicativos para Harbour

Mensagem por JoséQuintas »

Esquisito né... ficar pronto em uma hora afastou interessados.

O que tenho (tinha) pronto:

Código: Selecionar todos

 Pasta de d:\fontes\util\GERADOR

16/10/2021  08:52    <DIR>          .
16/10/2021  08:52    <DIR>          ..
28/03/2021  13:59            14.486 GERA.CFG
28/03/2021  13:59               345 GERA.CH
28/03/2021  13:59               181 gera.hbp
04/09/2021  11:36             3.823 gera.prg
28/03/2021  13:59             2.498 ge_basconversao.prg
28/03/2021  13:59             5.785 ge_basdatabase.prg
28/03/2021  13:59             7.711 ge_basextenso.prg
28/03/2021  13:59             4.656 ge_basform.prg
28/03/2021  13:59             1.292 ge_basgeral.prg
28/03/2021  13:59             3.054 ge_basmenu.prg
28/03/2021  13:59             2.613 ge_baspesquisa.prg
28/03/2021  13:59             1.665 ge_basusuario.prg
28/03/2021  13:59             2.329 ge_baswinapi.prg
04/09/2021  11:36             6.130 GE_EXCA.PRG
28/03/2021  13:59             1.361 GE_EXIN.PRG
04/09/2021  11:36            10.874 ge_exme.prg
04/09/2021  11:36             6.876 GE_EXRE.PRG
11/08/2021  00:32             7.664 ge_frmabout.prg
28/03/2021  13:59            27.238 ge_frmcadastro.prg
28/03/2021  13:59             4.340 ge_frmdicas.prg
28/03/2021  13:59             5.619 ge_frmimporta.prg
28/03/2021  13:59             5.939 ge_frmlogin.prg
28/03/2021  13:59             6.178 ge_frmmenu.prg
28/03/2021  13:59             6.609 ge_frmpesquisa.prg
28/03/2021  13:59             3.865 ge_frmpopup.prg
28/03/2021  13:59             5.072 ge_frmRelatorio.prg
28/03/2021  13:59               240 GE_FUNC.PRG
04/09/2021  11:36             7.019 ge_gera.prg
04/09/2021  11:36             5.551 ge_hmg.prg
04/09/2021  11:14             9.284 ge_html.prg
28/03/2021  13:59             1.519 ge_prgAbre.prg
28/03/2021  13:59             7.491 ge_prgCadastro.prg
04/09/2021  11:14             1.916 ge_prgindex.prg
28/03/2021  13:59             1.370 ge_prgMenu.prg
28/03/2021  13:59             2.248 ge_prgpesquisa.prg
28/03/2021  13:59             1.167 ge_prgPrincipal.prg
28/03/2021  13:59             8.168 ge_prgrelatorio.prg
28/03/2021  13:59             3.113 ge_prgvalida.prg
04/09/2021  11:36             3.930 ge_setupedit.prg
28/03/2021  13:59             6.742 ge_setupexec.prg
04/09/2021  11:14             5.110 ge_setupini.prg
04/09/2021  11:14             4.291 ge_setupprint.prg
28/03/2021  13:59             3.845 ge_vbpprojeto.prg
04/09/2021  11:14             1.064 ze_dbf.prg
04/09/2021  11:36             6.505 ze_manut.prg
04/09/2021  11:36            10.686 ze_relat.prg
              46 arquivo(s)        239.462 bytes
um gerador/executor, aonde configura campos, validações, relacionamentos pra pesquisa, etc.
é ir definindo e executando, já vendo em funcionamento.
Quando tudo funcionando do jeito que queria, é pedir pra gerar fontes.
Pode ser fontes em Harbour, ou fontes em VISUAL BASIC, o projeto inteiro pronto pra ser carregado na IDE do Visual Basic.

o tenho/tinha, é porque minhas LIBs foram sendo modificadas com o tempo, mas deixei o gerador pra trás.
Pelo GIT posso voltar a uma versão funcional, mas o ideal seria ir em frente.
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

Criando um gerador de aplicativos para Harbour

Mensagem por JoséQuintas »

Tem também um em HWGUI, mas não sei usar hwgui direito.

Código: Selecionar todos

d:\fontes\testes>cd hwguicadastro

d:\fontes\testes\hwguicadastro>dir
 O volume na unidade D é TRABALHO
 O Número de Série do Volume é C4CC-0221

 Pasta de d:\fontes\testes\hwguicadastro

15/10/2021  18:00    <DIR>          .
15/10/2021  18:00    <DIR>          ..
28/03/2021  13:59             1.548 exe.manifest
28/03/2021  13:59            16.958 icodefault.ico
28/03/2021  13:59            16.958 icoDoor.ico
28/03/2021  13:59            16.958 icoEdit.ico
28/03/2021  13:59            16.958 icoFirst.ico
28/03/2021  13:59            16.958 icolast.ico
28/03/2021  13:59            16.958 icoLeft.ico
28/03/2021  13:59            16.958 icoPlus.ico
28/03/2021  13:59            12.862 icoRight.ico
28/03/2021  13:59            16.958 icoSearch.ico
28/03/2021  13:59            16.958 icoTrash.ico
17/10/2019  13:57             4.343 jpcadas.DBF
19/02/2014  13:36               195 jpcomiss.dbf
04/04/2018  00:42               675 jpestoq.DBF
17/10/2019  13:57             1.219 jpimpos.DBF
17/10/2019  13:57             1.987 jpnota.DBF
17/10/2019  13:57             3.771 JPPEDI.DBF
01/10/2021  13:36           467.985 jptabel.DBF
11/07/2014  12:59               579 jpveicul.dbf
19/08/2014  15:47               710 jpvended.dbf
27/08/2021  12:18               195 test.dbf
15/10/2021  17:56           614.400 test.exe
02/08/2021  20:15                69 test.hbp
15/10/2021  17:56             5.543 test.prg
27/08/2021  12:54               513 test.rc
              25 arquivo(s)      1.269.216 bytes
É copiar os DBFs pra pasta e executar.
hwgui.png
Já criou automático o menu pra cada DBF, e cada opção já é a tela para o DBF selecionado.
vendedor.png
veiculo.png
pedido.png
Esse está executando direto.
Não gera fonte, e não tem nenhum tipo de dicionário, apenas pega a estrutura e já executa, criando as telas.

Naquele em Visual Basic eu usava o TabbedControl (ou algo assim) pra dividir a tela em várias abas.
Em HWGUI não pesquisei nada em como fazer.

Código: Selecionar todos

15/10/2021  17:56             5.543 test.prg
É só esse fonte mesmo.
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

Criando um gerador de aplicativos para Harbour

Mensagem por JoséQuintas »

O fonte do menu:

Código: Selecionar todos

FUNCTION Main()

   LOCAL oFrmMain
   LOCAL aFileList, aFile

   SET EXCLUSIVE OFF

   aFileList := Directory( "*.dbf" )

   INIT WINDOW oFrmMain TITLE "Example" SIZE 800,500 ;
         MENUPOS 3 BACKCOLOR 16744703
   MENU OF oFrmMain
      MENU TITLE "Any"
         FOR EACH aFile IN aFileList
            AddOption( aFile[ F_NAME ] )
         NEXT
         MENUITEM "&Exit" ACTION hwg_EndWindow()
      ENDMENU
   ENDMENU
   ACTIVATE WINDOW oFrmMain

   RETURN Nil

FUNCTION AddOption( cFile )

   MENUITEM cFile ACTION Execute( cFile )

   RETURN Nil
O fonte completo, com TUDO, tem exatamente 214 linhas.
Se roda sem precisar fonte, gerar fonte pra que?
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

Criando um gerador de aplicativos para Harbour

Mensagem por JoséQuintas »

Sobre o primeiro gerador....
Um post de 3 ANOS ATRÁS, mostrando em funcionando.

https://pctoledo.org/forum/viewto ... it=gerador

Interessante né.... como essa estória de gerador vai e volta...
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/
ivanil
Usuário Nível 3
Usuário Nível 3
Mensagens: 166
Registrado em: 11 Set 2004 15:13
Localização: Florianópolis/SC

Criando um gerador de aplicativos para Harbour

Mensagem por ivanil »

O designer postado em IDE aqui mesmo no fórum, além de outras coisas já faz isso também há pelo menos 2 anos;
Foi montado um cabeçalho que permite o mesmo código trabalhar com os bancos de dados: DBF, Firebird, Mysql, Sqlite, Postgree e principalmente o ADO que abre o universo para qualquer outro BD;
Crie a conexão, clique no wizard, escolha os campos, ajuste os Labels, redirecione os controles (cada qual cai dentro de um padrão que você mesmo padroniza Logic=checkbox,date=datepicker,etc); permite repaginação; (TAB); se não detectar a chave primaria automaticamente você escolhe, informe o campo de pesquisa, escolha os campos para relatório e finalize e pronto, um esqueleto completo de formulário inclusive o CRUD com seu código fonte para uso ou retoque
O formulário gerado pode ser aberto pelas outras IDE, mas realmente não vejo motivo para fazer isso;
Ao clicar nos eventos vazios, automaticamente cria uma função static no fonte do formulário padronizada com nome do formulário, controle e evento, ou se não estiver vazio, se posiciona na função, não chega a ser a perfeição que vemos no DELPHI/VISUAL BASIC e outras IDEs Comerciais, mas me atende muito bem;
Ele permite gerar 2 tipos de formulário, HTML e Excel; como trabalho com consultoria, meus clientes precisam mesmo é do Excel para trabalhar a informação, o HTML foi mais para atender um publico que não tem o office;
é de uso livre, mantenho sempre atualizada com a ultima versão da Minigui extend;
Atualmente tem as traduções: USA/ITALIANO/ESPANHOL;
Fiz vários vídeos que estão no youtube que mostram algumas das funcionalidades,

Alguns colegas preferem fazer não mão, eu desde o clipper jã deixava tudo meio no automático, quanto mais pratico e rápido melhor, afinal de contas é só tela;

https://github.com/ivanilmarcelino/designer
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Criando um gerador de aplicativos para Harbour

Mensagem por JoséQuintas »

hwgui.png
Fui pegar uma pasta com DBFs pra teste, e tem quase 300 arquivos.
Acabei precisando dividir o menu em vários.
Também alterei pra dialog nomodal.

O fonte acabou aumentando de 214 linhas pra 220 linhas.

O novo menu

Código: Selecionar todos

#include "hbclass.ch"
#include "hwgui.ch"
#include "hwg_extctrl.ch"
#include "dbstruct.ch"
#include "directry.ch"

FUNCTION Main()

   LOCAL oFrmMain
   LOCAL aFileList, aFile

   SET EXCLUSIVE OFF

   aFileList := Directory( "*.dbf" )

   INIT WINDOW oFrmMain TITLE "Example" SIZE 800,500 ;
         MENUPOS 3 BACKCOLOR 16744703
   MENU OF oFrmMain
      FOR EACH aFile IN aFileList
         IF Mod( aFile:__EnumIndex, 30 ) == 1
            MENU TITLE "Opt" + Ltrim( Str( Int( aFile:__EnumIndex / 30 ) + 1, 2 ) )
         ENDIF
         AddOption( aFile[ F_NAME ] )
         IF Mod( aFile:__EnumIndex, 30 ) == 0
            MENUITEM "&Exit" ACTION hwg_EndWindow()
            ENDMENU
         ENDIF
      NEXT
      MENUITEM "&Exit" ACTION hwg_EndWindow()
      ENDMENU
   ENDMENU
   ACTIVATE WINDOW oFrmMain

   RETURN Nil
NÃO É GERADOR.
Está executando direto mesmo.
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

Criando um gerador de aplicativos para Harbour

Mensagem por JoséQuintas »

Fonte simples, tipo adicionar quais serão os buttons.

Código: Selecionar todos

METHOD CreateButtons() CLASS FrmClass

   LOCAL nRow, nCol, acOptions := {}, cCaption, bCode

   //PREPARE FONT oFont NAME "Times New Roman" WIDTH 0 HEIGHT 20 WEIGHT 400

   IF "C" $ ::cOptions
      AAdd( acOptions, "Consulta" )
   ENDIF
   IF "I" $ ::cOptions
      AAdd( acOptions, "Inclui" )
   ENDIF
   IF "A" $ ::cOptions
      AAdd( acOptions, "Altera" )
   ENDIF
   IF "E" $ ::cOptions
      AAdd( acOptions, "Exclui" )
   ENDIF
   IF "P" $ ::cOptions
      AAdd( acOptions, "Primeiro" )
   ENDIF
   IF "U" $ ::cOptions
      AAdd( acOptions, "Último" )
   ENDIF
   IF "+" $ ::cOptions
      AAdd( acOptions, "Seguinte" )
   ENDIF
   IF "-" $ ::cOptions
      AAdd( acOptions, "Anterior" )
   ENDIF
   AAdd( acOptions, "Sair" )
ou escolher qual imagem será usada

Código: Selecionar todos

STATIC FUNCTION IconFromCaption( cCaption )

   LOCAL cIcon

   DO CASE
   CASE cCaption == "Inclui";   cIcon := "icoPlus"
   CASE cCaption == "Altera";   cIcon := "icoEdit"
   CASE cCaption == "Exclui";   cIcon := "icoTrash"
   CASE cCaption == "Primeiro"; cIcon := "icoFirst"
   CASE cCaption == "Seguinte"; cIcon := "icoRight"
   CASE cCaption == "Anterior"; cIcon := "icoLeft"
   CASE cCaption == "Último";   cIcon := "icoLast"
   CASE cCaption == "Consulta"; cIcon := "icoSearch"
   CASE cCaption == "Sair";     cIcon := "icoDoor"
   OTHERWISE
      cIcon := "icoDefault"
   ENDCASE

   RETURN cIcon
O fonte com 220 linhas inclui tudo isso acima.
Como já postei praticamente metade, são só por volta de mais 100 linhas de fonte, além das postadas aqui.

Como eu disse antes: porque gerar fonte se dá pra executar direto?
São 220 linhas de fonte pra executar tudo sem gerar fonte.
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

Criando um gerador de aplicativos para Harbour

Mensagem por JoséQuintas »

Código: Selecionar todos

METHOD OptionCreate() CLASS frmGuiClass

   LOCAL oElement, cLetter

   IF "I" $ ::cOptions
      AAdd( ::oButtons, { Asc( "I" ), "<I>Inclui" } )
      AAdd( ::acHotKeys, { K_INS,      Asc( "I" ) } )          // Traduz INS para Inclui
      AAdd( ::acHotKeys, { Asc( "0" ), Asc( "I" ) } )
   ENDIF
   IF "A" $ ::cOptions
      AAdd( ::oButtons, { Asc( "A" ), "<A>Altera" } )
   ENDIF
   IF "E" $ ::cOptions
      AAdd( ::oButtons, { Asc( "E" ), "<E>Exclui" } )
      AAdd( ::acHotKeys, { K_DEL,      Asc( "E" ) } ) // Traduz DEL para Exclui
      AAdd( ::acHotKeys, { Asc( "." ), Asc( "E" ) } )
      AAdd( ::acHotKeys, { Asc( "," ), Asc( "E" ) } )
   ENDIF
   IF ::lNavigate
      AAdd( ::oButtons,  { Asc( "C" ), "<C>Consulta" } )
      AAdd( ::oButtons,  { Asc( "P" ), "<P>Primeiro" } )
      AAdd( ::oButtons,  { Asc( "-" ), "<->Anterior" } )
      AAdd( ::oButtons,  { Asc( "+" ), "<+>Seguinte" } )
      AAdd( ::oButtons,  { Asc( "U" ), "<U>Último" } )
      AAdd( ::acHotKeys, { K_HOME,     Asc( "P" ) } )
      AAdd( ::acHotKeys, { Asc( "7" ), Asc( "P" ) } )
      AAdd( ::acHotKeys, { K_END,      Asc( "U" ) } )
      AAdd( ::acHotKeys, { Asc( "1" ), Asc( "U" ) } )
      AAdd( ::acHotKeys, { K_PGUP,     Asc( "-" ) } )
      AAdd( ::acHotKeys, { Asc( "9" ), Asc( "-" ) } )
      AAdd( ::acHotKeys, { K_PGDN,     Asc( "+" ) } )
      AAdd( ::acHotKeys, { Asc( "3" ), Asc( "+" ) } )
   ENDIF

Código: Selecionar todos

FUNCTION IconFromCaption( cCaption, cTooltip )

   LOCAL cSource := ""

   hb_Default( @cTooltip, "" )

   DO CASE
   CASE cCaption == "<ESC>Sair" ;           cSource := "icoDoor" ;         cTooltip := "ESC Encerra a utilização"
   CASE cCaption == "<->Anterior" ;         cSource := "icoLeft" ;         cTooltip := "- PGUP Move ao registro anterior"
   CASE cCaption == "<+>Seguinte" ;         cSource := "icoRight" ;        cTooltip := "+ PGDN Move ao registro seguinte"
   CASE cCaption == "<A>Altera" ;           cSource := "icoEdit" ;         cTooltip := "A Alterar existente"
   CASE cCaption == "<B>Baixa" ;            cSource := "icoMoney" ;        cTooltip := "B Baixa documento" // financeiro
   CASE cCaption == "<B>Base" ;             cSource := "icoGas" ;          cTooltip := "B Base"
   CASE cCaption == "<B>Recibos" ;          cSource := "icoInvoice" ;      cToolTip := "B Recibos" // Haroldo Recibos
   CASE cCaption == "<B>Boleto" ;           cSource := "icoBarCode" ;      cTooltip := "B Boleto" // Haroldo Recibos
Uia.
GTWVG ou HWGUI?
Nem dá pra saber direito quem é quem.
Neste post é GTWVG.

Quando eu digo que é tudo a mesma coisa ninguém acredita 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/
Responder