Clipper On Line • Ver Tópico - Janelas hwgui

Janelas hwgui

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Janelas hwgui

Mensagempor JoséQuintas » 17 Out 2020 23:36

Alguma coisa impede ter várias janelas?
Por exemplo: título repetido
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Janelas hwgui

Mensagempor JoséQuintas » 18 Out 2020 00:49

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Janelas hwgui

Mensagempor JoséQuintas » 18 Out 2020 01:42

Resolvido de não fechar.

   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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Janelas hwgui

Mensagempor asimoes » 18 Out 2020 08:39

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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Janelas hwgui

Mensagempor JoséQuintas » 18 Out 2020 11:36

Eliminei o controle de janelas, mas ainda não resolveu, por isso perguntei.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Janelas hwgui

Mensagempor JoséQuintas » 18 Out 2020 12:04

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

 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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Janelas hwgui

Mensagempor JoséQuintas » 18 Out 2020 12:12

Acho que isso vai resolver.

   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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Janelas hwgui

Mensagempor asimoes » 18 Out 2020 14:10

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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Janelas hwgui

Mensagempor JoséQuintas » 18 Out 2020 15:29

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

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Janelas hwgui

Mensagempor JoséQuintas » 18 Out 2020 15:54

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Janelas hwgui

Mensagempor JoséQuintas » 18 Out 2020 16:18

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Janelas hwgui

Mensagempor JoséQuintas » 18 Out 2020 16:59

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Janelas hwgui

Mensagempor JoséQuintas » 18 Out 2020 17:17

Aqui funcionou "gambiarra".

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Janelas hwgui

Mensagempor JoséQuintas » 18 Out 2020 17:38

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Janelas hwgui

Mensagempor JoséQuintas » 18 Out 2020 18:01

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Próximo



Retornar para HwGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 2 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro