HMG | SET WINDOW MAIN ON/OFF

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

HMG | SET WINDOW MAIN ON/OFF

Mensagem por microvolution »

Boa tarde!
alguém sabe dizer como é realmente a sintaxe e em qual condição pode se usar os comandos:

Código: Selecionar todos

SET WINDOW MAIN ON
SET WINDOW MAIN OFF
pelo que percebi se eu usar antes da criação do MAIN WINDOW ela funciona...
se colocar depois não funciona...
mas, afinal, onde tem um tutorial com a sintaxe correta e como usar?

Onde quero usar:
- tenho uma main window em hmg 3.5 e quero chamar módulos (feitos em GTWVG) que ainda não estão em form window da hmg (nem pretendo fazer a migração).
Então, quero chamar o módulo e desativar a WINDOW MAIN da HMG, usando o SET WINDOW MAIN OFF.
Após encerrar o processo quero usar SET WINDOW MAIN ON.
Mas, apareceu erro de sintaxe na compilação.
se alguém souber!
antes que alguém solicite pra eu ver... já vi o exemplo da tela de splash em hmg\samples\
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!
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

HMG | SET WINDOW MAIN ON/OFF

Mensagem por marcosgambeta »

Se você quer esconder a janela principal e depois voltar a mostra-la, os comandos são outros:

Código: Selecionar todos

// do arquivo i_window.ch

#xcommand SHOW WINDOW <name> ;
	=>;
	DoMethod ( <"name"> , 'Show' )

#xcommand HIDE WINDOW <name> ;
	=>;
	DoMethod ( <"name"> , 'Hide' )
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

HMG | SET WINDOW MAIN ON/OFF

Mensagem por marcosgambeta »

Testei aqui e a ideia funcionou corretamente.

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

Código: Selecionar todos

#include "hbgtinfo.ch"

STATIC lFlag := .F.
STATIC pNewGT
STATIC pOldGT

FUNCTION OpenConsole( cTitle, lAltEnter, lClosable )

   IF lFlag
      RETURN .F.
   ENDIF
   
   DoMethod( "MainWindow", "Hide" )

   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

   DoMethod( "MainWindow", "Show" )

RETURN .T.
Talvez fazendo desta forma (esconder a janela main sempre que mostrar a janela de console), você consiga a estabilidade que precisa.
Atenciosamente,
Marcos Antonio Gambeta
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

HMG | SET WINDOW MAIN ON/OFF

Mensagem por Claudio Soto »

Por defecto en HMG siempre debe existir una ventana MAIN y debe ser la primera ventana en activarse y siempre que se cierra la ventana MAIN se termina el programa.

SET WINDOW MAIN [ FIRST ] ON|OFF

Cuando es OFF permite que otras ventanas que no sean la MAIN se activen primero, inclusive cuando es OFF no es necesario que exista una ventana MAIN en la aplicacion.
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

HMG | SET WINDOW MAIN ON/OFF

Mensagem por microvolution »

meu caso é o seguinte:
- compilei um grande sistema usando a LIB GTWVG para simular o CONSOLE com uma cara mais bonita;
- uso apenas PUSHBUTTON apenas numa tela e uso LOADIMAGE apenas para splash;
- tudo é compilado dentro da IDE/HMG ou via BUILD.BAT e tem funcionado perfeitamente...
até... que resolvi melhorar um pouco mais o visual da aplicação, fazendo o seguinte:
- tela splash, resolvi, usar o exemplo SPLASH da SAMPLES HMG e deu certo;
- as mensagens de interação com o usuário (todas) são da HMG e deu certo;
- então, resolvi fazer um FORM MAIN WINDOW para só ele ser 100% em HMG...
aí que começou os problemas...
para alguns, já estão atá cansados de eu falar sobre isso...
mas, quem sabe, num futuro o Viktor e/ou o(s) mantenedores da HMG achem uma solução, pois, quando a partir do momento que se é acionada a janela GTWVG, ao retornar (retorna perfeitamente) e fecha, pois a janela GTWVG é iniciada com o objeto WVGCRT ou WVGDIALOG...
no momento do DESTROY e isso ocorre perfeitamente, é criada uma outra tela PRETA do nada que fica (escondida) atrás da FORM WINDOW MAIN da HMG.
Mas, a partir daí, aparecem erros de macrosubstitução ("&") ou "=" ou "==" nos arquivos da LIB HMG, que já falei sobre eles noutros grupos.
Então, estou pensando numa forma de separar as LIBs em tempo de execução, talvez um MT=YES (não sei como fazer os comandos/funções) para que quando a HMG chamar a instância GTWVG ela seja como se fosse outro programa e quando retornar ao FORM MAIN WINDOW da HMG, não interfira na HMG.
Daí, alguém me disse pra testar SET WINDOW MAIN ON/OFF que daria certo...
é KKK pra não isniff, traduzindo: "é rir pra não chorar"
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!
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

HMG | SET WINDOW MAIN ON/OFF

Mensagem por Claudio Soto »

En la carpeta SAMPLES de HMG vienen algunos ejemplos de aplicacion MT en ambiente GUI.
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Responder