Janelas 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

Janelas hwgui

Mensagem por JoséQuintas »

Alguma coisa impede ter várias janelas?
Por exemplo: título repetido
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

Janelas hwgui

Mensagem por JoséQuintas »

Ainda estou tentando ajustar isso, QUE NÃO TEM A VER COM O USO NORMAL.

Se usar WINDOW, no uso misturado, abre uma WINDOW, e fechando ou não, não abre mais nenhuma.
E além disso, fica alguma coisa zumbi ao sair, tendo que fechar no gerenciador de tarefas.
Também estranhei que o hmg_EndWindow() não funciona nessa janela, somente o fechar no "X".
Provavelmente tenha a ver com o problema, uma vez que fechar a janela não significa que fechou o "conjunto" janela+módulo.
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

Janelas hwgui

Mensagem por JoséQuintas »

Resolvido de não fechar.

Código: Selecionar todos

   INIT WINDOW ::oFrm TITLE ::cTitulo AT 20, 0 SIZE 800, 600 ON EXIT hwg_EndWindow( ::oFrm )
Alterei hwg_EndWindow pra aceitar parâmetro.

Agora falta resolver o de não abrir - só abre a primeira.
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
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Janelas hwgui

Mensagem por asimoes »

Somente Dialog, INIT WINDOW não pode abrir mais de uma. Internamente a classe das janelas as propriedades são iniciadas, somente são iniciadas novamente quando a janela é fechada.
A Dialog permite, um exemplo disso é abrir uma janela dialog e no activate dela abrir outra dialog
►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)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Janelas hwgui

Mensagem por JoséQuintas »

Eliminei o controle de janelas, mas ainda não resolveu, por isso perguntei.
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

Janelas hwgui

Mensagem por JoséQuintas »

Mas me lembrou da dialog, e isso me fez lembrar do que já comentei:

Código: Selecionar todos

 METHOD Close()    INLINE hwg_EndDialog( ::handle )
Agora preciso voltar ao meu teste inicial, quando conseguia abrir dialogs mas só fechavam na ordem em que foram abertas.
Eu estava usando hwg_EndDialog(), e isso não indica exatamente o que fechar.
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

Janelas hwgui

Mensagem por JoséQuintas »

Acho que isso vai resolver.

Código: Selecionar todos

   IF handle == Nil
      IF ( oDlg := Atail( HDialog():aModalDialogs ) ) == Nil
         RETURN Nil
      ENDIF
Quando não indica o que fechar, é fechada a última da lista, que é a última que foi aberta.
Exatamente o que eu tinha mencionado como problema, quando tudo começou.

A boa notícia é que basta usar o Close().
A má notícia.... é que na criação da dialog não existe a classe e muito menos o close(), não dá pra passar como parâmetro.
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
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Janelas hwgui

Mensagem por asimoes »

Dá uma pesquisada em hwg_GetModalHandle(), retorna o handle da janela, talvez jogando o handle em um vetor global
►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)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Janelas hwgui

Mensagem por JoséQuintas »

Este troço não tá meio doido?

Código: Selecionar todos

FUNCTION hwg_EndDialog( handle )

   LOCAL oDlg, lRes

   IF handle == Nil
      IF ( oDlg := Atail( HDialog():aModalDialogs ) ) == Nil
         RETURN Nil
      ENDIF
   ELSE
      IF ( ( oDlg := Atail( HDialog():aModalDialogs ) ) == Nil .OR. ;
            oDlg:handle != handle ) .AND. ;
            ( oDlg := HDialog():FindDialog( handle ) ) == Nil
         RETURN Nil
      ENDIF
   ENDIF
   IF oDlg:bDestroy != Nil
      lRes := Eval( oDlg:bDestroy, oDlg )
      IF Valtype( lRes ) != "L" .OR. lRes
         RETURN Iif( oDlg:lModal, Hwg__EndDialog( oDlg:handle ), hwg_Destroywindow( oDlg:handle ) )
      ELSE
         RETURN Nil
      ENDIF
   ENDIF

   RETURN  Iif( oDlg:lModal, Hwg__EndDialog( oDlg:handle ), hwg_Destroywindow( oDlg:handle ) )
É... porque se é passado exatamente qual diálogo fechar, porque a pesquisa doida?
Dá a impressão de que vai fechar outro diálogo e não o que foi solicitado.
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

Janelas hwgui

Mensagem por JoséQuintas »

ok, entendi.

No caso de dialog MODAL, só pode fechar o último.

Mas em multithread, como o modal equivale a um não modal... isso não se aplica.... bingo....

Ou quase bingo... depende se resolvendo uma coisa não vai atrapalhar a outra.
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

Janelas hwgui

Mensagem por JoséQuintas »

Código: Selecionar todos

CLASS VAR aModalDialogs SHARED INIT {}
Como alterar isso pra ser por thread?
Isso foge do meu uso normal.

Talvez alguma coisa do tipo

THREAD STATIC Variavel := {}

CLASS VAR aModalDialogs SETGET
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

Janelas hwgui

Mensagem por JoséQuintas »

tá complicado.
Error BASE/1004 No exported method: CLOSE
Called from CLOSE(0)
Called from (b)FRMCLASS_SAIR(172)
Called from FRMCLASS:SAIR(172)
Called from FRMCLASS:NEW(51)
Called from PTESHWGUI(16)
Não posso usar o Close() porque a tradução do método é feita antes da classe existir.
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

Janelas hwgui

Mensagem por JoséQuintas »

Aqui funcionou "gambiarra".

Código: Selecionar todos

METHOD Sair() CLASS FrmClass

   Eval( { || ::oFrm:Close() } )

   RETURN Nil
hwgui.png
Agora inverteu: vou precisar de uma soluçào pra quando realmente for modal... kkkkk
Dialogs ilimitadas e independentes, igual GTWVG.
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

Janelas hwgui

Mensagem por JoséQuintas »

Código: Selecionar todos

FUNCTION hwg_EndDialog( handle )

   LOCAL oDlg, lRes, nItem

   IF handle == Nil
      IF ( oDlg := Atail( HDialog():aModalDialogs ) ) == Nil
         RETURN Nil
      ENDIF
   ELSE
      IF ( nItem := hb_AScan( HDialog():aModalDialogs, { | e | e:Handle == Handle } ) ) != 0
         oDlg := HDialog():aModalDialogs[ nItem ]
      ELSEIF ( ( oDlg := Atail( HDialog():aModalDialogs ) ) == Nil .OR. ;
            oDlg:handle != handle ) .AND. ;
            ( oDlg := HDialog():FindDialog( handle ) ) == Nil
         RETURN Nil
      ENDIF
   ENDIF
O que fiz foi acrescentar a parte que permite fechar qualquer dialogo modal.

Foi só um teste.
Agora é pensar como ter esse "novo comportamento" e o original ao mesmo tempo.
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

Janelas hwgui

Mensagem por JoséQuintas »

misto.png
Traduzindo:

Agora tanto faz.
Continuo usando GTWVG, mas pode ter módulos em HWGUI ou HMG.
Posso abrir ou fechar qualquer módulo a qualquer momento.
Na tela, 3 módulos GTWVG e 2 HWGUI.
Só falta ajustar pra quando eu quiser que um módulo hwgui abra outro módulo hwgui modal.
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