HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
Moderador: Moderadores
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
Bom dia a Todos(as)!
Migramos um grande sistema para harbour usando a HMG modo console.
Para LIB gráfica (temporária) usamos a GTWVG que vem inclusa na HMG 3.4 e 3.5 dentro da pasta \CONTRIBS\
Então, o sistema está rodando certinho...
Agora, estamos querendo aos poucos fazer as trocas das telas e implantando-as no cliente final, pois será um trabalho manual e árduo.
Então, começamos pelo começo:
TROCAR AS TELAS:
- DE SPLASH;
- DE LOGIN;
- TELA PRINCIPAL.
Bom, agora a pergunta que não quer calar:
Como faço para ACIONAR/CHAMAR telas em modo CONSOLE (@ SAY, GET, READ) que ainda não foram substituídas com o FORM WINDOW (@ LABEL, TEXTBOX, BUTTONS, etc), de dentro do FORM WINDOW (MAIN MENU) sem a necessidade de usar qualquer outra LIB GRÁFICA?
ou seja, sem necessidade de usar GTWVG, GTWVW, etc?
Migramos um grande sistema para harbour usando a HMG modo console.
Para LIB gráfica (temporária) usamos a GTWVG que vem inclusa na HMG 3.4 e 3.5 dentro da pasta \CONTRIBS\
Então, o sistema está rodando certinho...
Agora, estamos querendo aos poucos fazer as trocas das telas e implantando-as no cliente final, pois será um trabalho manual e árduo.
Então, começamos pelo começo:
TROCAR AS TELAS:
- DE SPLASH;
- DE LOGIN;
- TELA PRINCIPAL.
Bom, agora a pergunta que não quer calar:
Como faço para ACIONAR/CHAMAR telas em modo CONSOLE (@ SAY, GET, READ) que ainda não foram substituídas com o FORM WINDOW (@ LABEL, TEXTBOX, BUTTONS, etc), de dentro do FORM WINDOW (MAIN MENU) sem a necessidade de usar qualquer outra LIB GRÁFICA?
ou seja, sem necessidade de usar GTWVG, GTWVW, etc?
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
Impossível.microvolution escreveu:ou seja, sem necessidade de usar GTWVG, GTWVW, etc?
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/
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/
-
marcosgambeta
- Usuário Nível 3

- Mensagens: 332
- Registrado em: 16 Jun 2005 22:53
HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
Tente compilar este exemplo e veja se é o que deseja fazer:
Se for isto, pode servir de ponto de partida.
Código: Selecionar todos
#include "minigui.ch"
#include "hbgtinfo.ch"
REQUEST hb_gt_gui_default
REQUEST hb_gt_wvt
PROCEDURE Main()
DEFINE WINDOW MainWindow ;
AT 100, 100 ;
WIDTH 640 ;
HEIGHT 480 ;
TITLE "Teste" ;
MAIN
DEFINE MAIN MENU
POPUP "Menu"
ITEM "Janela 1" ACTION telaconsole1()
ITEM "Janela 2" ACTION telaconsole2()
END POPUP
END MENU
END WINDOW
ACTIVATE WINDOW MainWindow
RETURN
STATIC FUNCTION telaconsole1()
LOCAL cCampo1 := space(30)
hb_gtReload("WVT")
CLS
hb_gtInfo( HB_GTI_WINTITLE, "Janela console 1" )
hb_gtInfo( HB_GTI_ALTENTER, .T. )
hb_gtInfo( HB_GTI_CLOSABLE, .F. )
@ 10,10 SAY "CAMPO1:" GET cCampo1
READ
? cCampo1
WAIT
hb_gtReload("GUI")
RETURN NIL
STATIC FUNCTION telaconsole2()
LOCAL cCampo1 := space(30)
LOCAL cCampo2 := space(50)
hb_gtReload("WVT")
CLS
hb_gtInfo( HB_GTI_WINTITLE, "Janela console 2" )
hb_gtInfo( HB_GTI_ALTENTER, .T. )
hb_gtInfo( HB_GTI_CLOSABLE, .F. )
@ 8,10 SAY "CAMPO1:" GET cCampo1
@ 10,10 SAY "CAMPO2:" GET cCampo2
READ
? cCampo1
? cCampo2
WAIT
hb_gtReload("GUI")
RETURN NIL
Atenciosamente,
Marcos Antonio Gambeta
Marcos Antonio Gambeta
-
marcosgambeta
- Usuário Nível 3

- Mensagens: 332
- Registrado em: 16 Jun 2005 22:53
HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
Para evitar que o usuário abra mais de uma janela de console, pode-se usar uma flag (entre outros recursos):
Código: Selecionar todos
#include "minigui.ch"
#include "hbgtinfo.ch"
REQUEST hb_gt_gui_default
REQUEST hb_gt_wvt
STATIC lFlag := .F.
PROCEDURE Main()
DEFINE WINDOW MainWindow ;
AT 100, 100 ;
WIDTH 640 ;
HEIGHT 480 ;
TITLE "Teste" ;
MAIN
DEFINE MAIN MENU
POPUP "Menu"
ITEM "Janela 1" ACTION telaconsole1()
ITEM "Janela 2" ACTION telaconsole2()
END POPUP
END MENU
END WINDOW
ACTIVATE WINDOW MainWindow
RETURN
STATIC FUNCTION telaconsole1()
LOCAL cCampo1 := space(30)
IF lFlag
RETURN NIl
ENDIF
lFlag := .T.
hb_gtReload("WVT")
CLS
hb_gtInfo( HB_GTI_WINTITLE, "Janela console 1" )
hb_gtInfo( HB_GTI_ALTENTER, .T. )
hb_gtInfo( HB_GTI_CLOSABLE, .F. )
@ 10,10 SAY "CAMPO1:" GET cCampo1
READ
? cCampo1
WAIT
hb_gtReload("GUI")
lFlag := .F.
RETURN NIL
STATIC FUNCTION telaconsole2()
LOCAL cCampo1 := space(30)
LOCAL cCampo2 := space(50)
IF lFlag
RETURN NIl
ENDIF
lFlag := .T.
hb_gtReload("WVT")
CLS
hb_gtInfo( HB_GTI_WINTITLE, "Janela console 2" )
hb_gtInfo( HB_GTI_ALTENTER, .T. )
hb_gtInfo( HB_GTI_CLOSABLE, .F. )
@ 8,10 SAY "CAMPO1:" GET cCampo1
@ 10,10 SAY "CAMPO2:" GET cCampo2
READ
? cCampo1
? cCampo2
WAIT
hb_gtReload("GUI")
lFlag := .F.
RETURN NIL
Atenciosamente,
Marcos Antonio Gambeta
Marcos Antonio Gambeta
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
Tá aí uma solução interessante.
Ao trocar pra "janela GUI", a janela GTWVG é liberada, porque nada mais prende a janela.
Funciona também com hb_gtLoad( "WVG" ) nos dois lugares.
Isso porque a "nova" janela WVG não foi aberta, e não existe.
Ao trocar pra "janela GUI", a janela GTWVG é liberada, porque nada mais prende a janela.
Funciona também com hb_gtLoad( "WVG" ) nos dois lugares.
Isso porque a "nova" janela WVG não foi aberta, e não existe.
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/
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/
HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
Se quiser mostrar a tela maximizada:
Hb_GtInfo( HB_GTI_MAXIMIZED, .T. )
Hb_GtInfo( HB_GTI_MAXIMIZED, .T. )
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
Fiz um teste adicional, mas executa uma janela por vez.
Mas fiz outra coisa: chamar a opção 1 e depois chamar a opção 2
Fica a execução da opção 2 e depois trava tudo.
NÃO vai poder ter duas janelas WVG abertas, tem que ser uma de cada vez.
Já prepare pra evitar o travamento.
Código: Selecionar todos
ITEM "As duas" ACTION { || TelaConsole1(), TelaConsole2() }
Fica a execução da opção 2 e depois trava tudo.
NÃO vai poder ter duas janelas WVG abertas, tem que ser uma de cada vez.
Já prepare pra evitar o travamento.
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/
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/
HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
Funciona +- com a HwGUi o problema é isso
@ 10,10 SAY "CAMPO1:" GET cCampo1
A hwgui tem o objeto say e quando a tela é exibida não mostra nada, tem conflito
@ 10,10 SAY "CAMPO1:" GET cCampo1
A hwgui tem o objeto say e quando a tela é exibida não mostra nada, tem conflito
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
Já acrescentei como exemplo na HMG.
IMPEDIR a abertura de mais de uma janela é OBRIGATÓRIO.
E nem pode ter mensagem de alerta, pelo menos não da GTWVG.
Nota: talvez aí possa entrar a wvgCrt()
IMPEDIR a abertura de mais de uma janela é OBRIGATÓRIO.
E nem pode ter mensagem de alerta, pelo menos não da GTWVG.
Nota: talvez aí possa entrar a wvgCrt()
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
Só comentário:
Acho que fica interessante usar só o hb_gtLoad( "WVG" ) nos dois lugares, assim fica claro que é uma necessidade da GTWVG, e não uma interferência da LIB gráfica.
Do mesmo jeito que aconteceria com GTWVG sozinha, vai acontecer com ela misturada a LIB gráfica.
Não é o fato de poder chamar duas vezes a janela GTWVG, que vai transformar a janela default em multithread.
Talvez com wvgCrt() dê certo, ou talvez precise de outra janela GTWVG Main escondida.
Acho que fica interessante usar só o hb_gtLoad( "WVG" ) nos dois lugares, assim fica claro que é uma necessidade da GTWVG, e não uma interferência da LIB gráfica.
Do mesmo jeito que aconteceria com GTWVG sozinha, vai acontecer com ela misturada a LIB gráfica.
Não é o fato de poder chamar duas vezes a janela GTWVG, que vai transformar a janela default em multithread.
Talvez com wvgCrt() dê certo, ou talvez precise de outra janela GTWVG Main escondida.
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/
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/
HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
Talvez em uma janela thread, funcione
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
marcosgambeta
- Usuário Nível 3

- Mensagens: 332
- Registrado em: 16 Jun 2005 22:53
HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
Segue outro exemplo para testes, usando hb_gtCreate e hb_gtSelect:
Os passos são estes:
1. criar o novo GT
2. selecionar o novo GT, recebendo o anterior como retorno
3. usar o GT
4. selecionar o anterior
5. destruir o novo GT
Mas também precisa de controle para não abrir mais de uma vez.
Código: Selecionar todos
#include "minigui.ch"
#include "hbgtinfo.ch"
REQUEST hb_gt_gui_default
REQUEST hb_gt_wvt
STATIC lFlag := .F.
PROCEDURE Main()
DEFINE WINDOW MainWindow ;
AT 100, 100 ;
WIDTH 640 ;
HEIGHT 480 ;
TITLE "Teste" ;
MAIN
DEFINE MAIN MENU
POPUP "Menu"
ITEM "Janela 1" ACTION telaconsole1()
ITEM "Janela 2" ACTION telaconsole2()
END POPUP
END MENU
END WINDOW
ACTIVATE WINDOW MainWindow
RETURN
STATIC FUNCTION telaconsole1()
LOCAL pNewGT
LOCAL pOldGT
LOCAL cCampo1 := space(30)
IF lFlag
RETURN NIl
ENDIF
lFlag := .T.
//hb_gtReload("WVT")
pNewGT := hb_gtCreate( "WVT" )
pOldGT := hb_gtSelect( pNewGT )
CLS
hb_gtInfo( HB_GTI_WINTITLE, "Janela console 1" )
hb_gtInfo( HB_GTI_ALTENTER, .T. )
hb_gtInfo( HB_GTI_CLOSABLE, .F. )
@ 10,10 SAY "CAMPO1:" GET cCampo1
READ
? cCampo1
WAIT
//hb_gtReload("GUI")
hb_gtSelect( pOldGT )
pNewGT := NIL
lFlag := .F.
RETURN NIL
STATIC FUNCTION telaconsole2()
LOCAL pNewGT
LOCAL pOldGT
LOCAL cCampo1 := space(30)
LOCAL cCampo2 := space(50)
IF lFlag
RETURN NIl
ENDIF
lFlag := .T.
//hb_gtReload("WVT")
pNewGT := hb_gtCreate( "WVT" )
pOldGT := hb_gtSelect( pNewGT )
CLS
hb_gtInfo( HB_GTI_WINTITLE, "Janela console 2" )
hb_gtInfo( HB_GTI_ALTENTER, .T. )
hb_gtInfo( HB_GTI_CLOSABLE, .F. )
@ 8,10 SAY "CAMPO1:" GET cCampo1
@ 10,10 SAY "CAMPO2:" GET cCampo2
READ
? cCampo1
? cCampo2
WAIT
//hb_gtReload("GUI")
hb_gtSelect( pOldGT )
pNewGT := NIL
lFlag := .F.
RETURN NIL
1. criar o novo GT
2. selecionar o novo GT, recebendo o anterior como retorno
3. usar o GT
4. selecionar o anterior
5. destruir o novo GT
Mas também precisa de controle para não abrir mais de uma vez.
Atenciosamente,
Marcos Antonio Gambeta
Marcos Antonio Gambeta
HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
Consegui também na HwGui, tem que ser em fontes separados, ai funciona, ou seja não pode hwgui.ch onde vai usar Console
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
Olá!
Tentei compilar o primeiro exemplo com a instalação padrão da Minigui Extended BCC 5.8 que tenho instalados mas está dando o erro abaixo:
Tentei compilar o primeiro exemplo com a instalação padrão da Minigui Extended BCC 5.8 que tenho instalados mas está dando o erro abaixo:
Como resolver isto?C:\MiniGUI\SAMPLES\Advanced\MixGUI-WVT>call ..\..\..\batch\compile.bat demo
Harbour 3.2.0dev (r2011030937)
Copyright (c) 1999-2020, https://harbour.github.io/
Compiling 'demo.prg'...
Lines 23269, Functions/Procedures 3
Generating C source output to 'demo.c'... Done.
demo.c:
Turbo Incremental Link 5.69 Copyright (c) 1997-2005 Borland
Error: Unresolved external '_HB_FUN_HB_GT_WVT' referenced from C:\MINIGUI\SAMPLES\ADVANCED\MIXGUI-WVT\DEMO.OBJ
Link error.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
Talvez adicionar?
-gtgui
-gtwvt
Lembrando de um uso normal também:
O announce obriga que o linqueditor procure nesse fonte antes de qualquer outra coisa.
E a hb_gtsys é um ponto de partida pra GTs.
Algumas LIBs usam isso pra empurrar a GT_GUI sozinha, sem mais nada, e isso pode impedir mudanças.
Mas do jeito acima acaba anulando o que possa existir em lib.
-gtgui
-gtwvt
Lembrando de um uso normal também:
Código: Selecionar todos
ANNOUNCE HB_GTSYS
PROCEDURE HB_GTSYS
REQUEST HB_GT_GUI
REQUEIST HB_GT_WVT
RETURN
E a hb_gtsys é um ponto de partida pra GTs.
Algumas LIBs usam isso pra empurrar a GT_GUI sozinha, sem mais nada, e isso pode impedir mudanças.
Mas do jeito acima acaba anulando o que possa existir em 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/
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/