HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
Moderador: Moderadores
-
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
O arquivo batch\compile.bat usa a gtwin.lib. Experimente isto:
1. Faça uma cópia do arquivo original
2. Para cada ocorrência da gtwin, crie uma linha igual logo abaixo, mas trocando gtwin por gtwvt
Se a compilação for com hbmk2, é apenas questão de usar o parâmetro -gtwvt.
1. Faça uma cópia do arquivo original
2. Para cada ocorrência da gtwin, crie uma linha igual logo abaixo, mas trocando gtwin por gtwvt
Se a compilação for com hbmk2, é apenas questão de usar o parâmetro -gtwvt.
Atenciosamente,
Marcos Antonio Gambeta
Marcos Antonio Gambeta
-
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á!
Mesmo erro. Ele não encontra uma lib onde exista esta função '_HB_FUN_HB_GT_WVT'.
Mesmo erro. Ele não encontra uma lib onde exista esta função '_HB_FUN_HB_GT_WVT'.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
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
Neste último exemplo, com hb_gtCreate e hb_gtSelect, quase foi possível usar duas janelas simultâneas. Mas ocorre este problema:
A digitação, na janela criada por último, funciona normal. Mas na primeira janela, fica presa enquanto a segunda não for fechada.
Quando a segunda é fechada, o que foi digitado na primeira aparece.
Mesmo usando LOCAL getlist := {}, o problema persiste.
A digitação, na janela criada por último, funciona normal. Mas na primeira janela, fica presa enquanto a segunda não for fechada.
Quando a segunda é fechada, o que foi digitado na primeira aparece.
Mesmo usando LOCAL getlist := {}, o problema persiste.
Atenciosamente,
Marcos Antonio Gambeta
Marcos Antonio Gambeta
HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
Tentou o uso com thread ?marcosgambeta escreveu:Neste último exemplo, com hb_gtCreate e hb_gtSelect, quase foi possível usar duas janelas simultâneas. Mas ocorre este problema:
►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)
HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
Eu tenho isso na minha aplicação
Código: Selecionar todos
IF pWindowGTI != Nil
wapi_DestroyWindow( pWindowGTI )
ENDIF
►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
Melhor nem complicar.asimoes escreveu:Tentou o uso com thread ?
Se pro usuário já é difícil entender sem multithread, com multithread piorou....
Além disso, com multithread aí sim vai ter que reescrever tudo, ou vai sugerir gambiarra com tudo visível.
É melhor deixar isso pra quem já mexe com isso.
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
Depois, quando sobrar tempo, vou brincar com tudo isso.
Talvez a hb_gtSelect() presa a rotina da LIB GUI, ou coisa do tipo, só testando pra ver se dá.
De repente ao invés de usar multithread pra geral, usa só pra guardar esse hb_gtSelect(), se isso funcionar.
Talvez a hb_gtSelect() presa a rotina da LIB GUI, ou coisa do tipo, só testando pra ver se dá.
De repente ao invés de usar multithread pra geral, usa só pra guardar esse hb_gtSelect(), se isso funcionar.
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
Só completando o meu último post para destruir a janela
Código: Selecionar todos
pWindowGTI := Hb_gtInfo( HB_GTI_WINHANDLE )
IF pWindowGTI != Nil
wapi_DestroyWindow( pWindowGTI )
ENDIF
►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
Com thread não tentei.
A ideia era obter o mesmo efeito quando se tem duas janelas GUI. O usuário pode digitar numa, mudar o foco para outra e digitar nela, sem problemas. Sem ter de lidar com threads.
Mas com janelas de console, tem este detalhe da digitação.
Por enquanto, o mais seguro é abrir uma janela por vez para o usuário, assim como é num programa em modo texto.
A ideia era obter o mesmo efeito quando se tem duas janelas GUI. O usuário pode digitar numa, mudar o foco para outra e digitar nela, sem problemas. Sem ter de lidar com threads.
Mas com janelas de console, tem este detalhe da digitação.
Por enquanto, o mais seguro é abrir uma janela por vez para o usuário, assim como é num programa em modo texto.
Atenciosamente,
Marcos Antonio Gambeta
Marcos Antonio Gambeta
HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
Com thread
►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)
HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
Isso mesmo Marcos, tem que usar LOCAL GetList := {}, cada uma com o seu objeto get
Mesmo usando thread
Mesmo usando thread
►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)
HMG | EXECUTAR MÓDULO CONSOLE DENTRO DE FORM WINDOW MAIN
►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
Com thread pode cair no problema de precisar reescrever fonte, e com isso, criamos mais uma dificuldade para o usuário.marcosgambeta escreveu:Com thread não tentei.
A ideia era obter o mesmo efeito quando se tem duas janelas GUI. O usuário pode digitar numa, mudar o foco para outra e digitar nela, sem problemas. Sem ter de lidar com threads.
Mas com janelas de console, tem este detalhe da digitação.
Por enquanto, o mais seguro é abrir uma janela por vez para o usuário, assim como é num programa em modo texto.
Com certeza, TEORICAMENTE, resolve qualquer parada.
Mas na prática.... podemos criar um problema muito maior.
Começa em que.... quem disse que as LIBs estão preparadas pra multithread?
Aí... resolver o problema inicial vai se tornar até suporte pra modificar a LIB, e explicar multithread, e outras coisas mais...
Tendo a janela GTWVG, ele se vira com o que costuma usar e pronto.
Eu quero terminar essa remontagem inicial que comecei das LIBs, e por enquanto não quero desviar com testes, mas talvez facilite muito usar a WVG como default, ao invés de GUI.
A montagem inicial é apenas usar HBP, e modificar o nome das LIBs.
Depois... aí vou começar a misturar ao máximo, mas alterando o mínimo possível.
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
Na minha opinião ele deveria iniciar o projeto totalmente MINIGUI, colocar em homologação pro usuário testar e deixar o outro sem modificações, vai dar trabalho de qq jeito, com thread ou sem thread, essa coisa de misturar console/gui tem trabalho mesmo, quando eu tinha issso, eu fiz um fonte que iniciava e chamava todas as janelas consoles a partir da gui, também só escrevi uma única vez, código com 30 linhas ou menos, ai é decisão do microvolution, usei thread com waitthread, não queria várias janelas abertas ao mesmo tempo
►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
Mais um exemplo, adaptado para usar funções:
Talvez fique mais simples de usar, fazendo desta forma. Não é necessário ficar repetindo o mesmo código em cada rotina. Apenas abrir o console no início e fechar no final.
Código: Selecionar todos
#include "hbgtinfo.ch"
STATIC lFlag := .F.
STATIC pNewGT
STATIC pOldGT
FUNCTION OpenConsole( cTitle, lAltEnter, lClosable )
IF lFlag
RETURN .F.
ENDIF
lFlag := .T.
pNewGT := hb_gtCreate( "WVT" )
pOldGT := hb_gtSelect( pNewGT )
CLS
hb_gtInfo( HB_GTI_WINTITLE, cTitle )
hb_gtInfo( HB_GTI_ALTENTER, lAltEnter )
hb_gtInfo( HB_GTI_CLOSABLE, lClosable )
RETURN .T.
FUNCTION CloseConsole()
IF !lFlag
RETURN .F.
ENDIF
lFlag := .F.
hb_gtSelect( pOldGT )
pNewGT := NIL
RETURN .T.
Código: Selecionar todos
#include "minigui.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)
IF !OpenConsole( "Janela console 1", .T., .F. )
RETURN NIl
ENDIF
@ 10,10 SAY "CAMPO1:" GET cCampo1
READ
? cCampo1
WAIT
CloseConsole()
RETURN NIL
STATIC FUNCTION telaconsole2()
LOCAL cCampo1 := space(30)
LOCAL cCampo2 := space(50)
IF !OpenConsole( "Janela console 2", .T., .F. )
RETURN NIl
ENDIF
@ 8,10 SAY "CAMPO1:" GET cCampo1
@ 10,10 SAY "CAMPO2:" GET cCampo2
READ
? cCampo1
? cCampo2
WAIT
CloseConsole()
RETURN NIL
Atenciosamente,
Marcos Antonio Gambeta
Marcos Antonio Gambeta