Atualizações Hwgui 28/10/2021

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Atualizações Hwgui 28/10/2021

Mensagem por Itamar M. Lins Jr. »

Olá!
E essa foi a alteração que causou problema pra ele, e resolveu o problema pra você.
Não existe isso!
Ninguém é o escolhido do BUG ! O BUG é para todo mundo.
Cadê o exemplo dele com o problema ? Como vamos analisar ?
Esse BUG que eu ISOLEI ocorre em qualquer usuário, todo mundo usa DIALOG e OwnerButtons. O OwnerButton estava escondendo a DIALOG foi demostrado através do exemplo.
A Hwgui não tinha esse BUG do OwnerButton apareceu depois que ele fez uma atualização, fiquei procurando até achar qual foi. E isso demorou meses, pq não estava com tempo para ficar procurando fiquei usando as versões anteriores até achar o BUG e isola-lo.
Não é que a correção dele resolveu meu problema particular, isso é que cansa na Hwgui, 3, 4 pessoas apenas conversando sobre os problemas da Hwgui depois aparecem 50, 100... perguntando isso e aquilo.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Atualizações Hwgui 28/10/2021

Mensagem por JoséQuintas »

Itamar M. Lins Jr. escreveu:Não existe isso!
Ninguém é o escolhido do BUG ! O BUG é para todo mundo.
Cadê o exemplo dele com o problema ? Como vamos analisar ?
Esse BUG que eu ISOLEI ocorre em qualquer usuário, todo mundo usa DIALOG e OwnerButtons. O OwnerButton estava escondendo a DIALOG foi demostrado através do exemplo.
A Hwgui não tinha esse BUG do OwnerButton apareceu depois que ele fez uma atualização, fiquei procurando até achar qual foi. E isso demorou meses, pq não estava com tempo para ficar procurando fiquei usando as versões anteriores até achar o BUG e isola-lo.
Não é que a correção dele resolveu meu problema particular, isso é que cansa na Hwgui, 3, 4 pessoas apenas conversando sobre os problemas da Hwgui depois aparecem 50, 100... perguntando isso e aquilo.
Itamar, talvez postei demais, e deixou passar.
O seu exemplo serve pra o problema dele também, só mudei o segundo dialog pra NOMODAL.

Seu exemplo com MODAL - MODAL - MODAL, a alteração de mandar para o modal anterior serviu.
Seu exemplo com MODAL - NOMODAL - MODAL, a alteração de mandar para o modal anterior pulou uma dialog.
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

Atualizações Hwgui 28/10/2021

Mensagem por JoséQuintas »

Fiz uma tentativa, agora está exatamente com o problema dele.

Código: Selecionar todos

#include "hwgui.ch"

FUNCTION main

   LOCAL oFormMain, oBt

   INIT WINDOW oFormMain MAIN APPNAME "TEST" STYLE WS_POPUP +  WS_CAPTION + WS_SYSMENU ;
      AT 0,0 SIZE 500,400
   @ 10,10 OWNERBUTTON oBt SIZE 70,70 TEXT "CLICK ME" ON CLICK {||DialogA(oFormMain)}
   oFormMain:Activate()

   RETURN Nil

FUNCTION DialogA(oAnterior)

   LOCAL oBt, oDlg

   INIT DIALOG oDlg CLIPPER NOEXIT AT 70,70 SIZE 800,500
   @ 10,10 OwnerButton oBt Size 70,70 TEXT "CLICK ME" ON CLICK {||MyFunction()} //Hiden Dlg MyFunction, while mouse cursor exit button.
   oDlg:oParent := oAnterior
   ACTIVATE DIALOG oDlg NOMODAL

   RETURN Nil

FUNCTION MyFunction( oAnterior )

   LOCAL oDlg

   INIT DIALOG oDlg CLIPPER NOEXIT AT 300,300 SIZE 300,100
   oDlg:oParent := oAnterior
   oDlg:Activate()

   RETURN Nil
Ao mover o mouse, a terceira janela vai pra trás da segunda.
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

Atualizações Hwgui 28/10/2021

Mensagem por JoséQuintas »

E a solução foi o que faltou no fonte, MyFunc(oDlg)

Isso demonstra que o oParent automático não está dando certo.
E talvez a mesma solução sirva no seu caso.
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

Atualizações Hwgui 28/10/2021

Mensagem por JoséQuintas »

Bingo.

Se deixar no automático, o seu dá problema SEM a alteração, e o dele dá problema COM a alteração.
Se indicar o parent manualmente, tudo funciona.

Voltamos ao ponto de partida: o parent automático
Talvez com os exemplos ajude.
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

Atualizações Hwgui 28/10/2021

Mensagem por JoséQuintas »

Código: Selecionar todos


#include "hwgui.ch"

FUNCTION main

   LOCAL oFormMain, oBt

   INIT WINDOW oFormMain MAIN APPNAME "TEST" STYLE WS_POPUP +  WS_CAPTION + WS_SYSMENU ;
      AT 0,0 SIZE 500,400
   @ 10,10 OWNERBUTTON oBt SIZE 70,70 TEXT "CLICK ME" ON CLICK {||DialogA(oFormMain)}
   oFormMain:Activate()

   RETURN Nil

FUNCTION DialogA(oDlgAnterior)

   LOCAL oBt, oDlg

   INIT DIALOG oDlg CLIPPER NOEXIT AT 70,70 SIZE 800,500
   @ 10,10 OwnerButton oBt Size 70,70 TEXT "CLICK ME" ON CLICK {||MyFunction(oDlg)} //Hiden Dlg MyFunction, while mouse cursor exit button.
   oDlg:oParent := oDlgAnterior
   ACTIVATE DIALOG oDlg NOMODAL

   RETURN Nil

FUNCTION MyFunction( oDlgAnterior )

   LOCAL oDlg

   INIT DIALOG oDlg CLIPPER NOEXIT AT 300,300 SIZE 300,100
   oDlg:oParent := oDlgAnterior
   oDlg:Activate()

   RETURN Nil
Aqui, em todas as situações, passei a dialog anterior, pra colocar como parent.
Assim funciona sempre.
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

Atualizações Hwgui 28/10/2021

Mensagem por JoséQuintas »

Os tres testes:

com a segunda modal
com a segunda nomodal
passando parent
test.zip
(1.43 KiB) Baixado 147 vezes
Não sei se algo como hwg_GetActiveDialog() resolveria, porque nem sempre a Dialog vém de outra Dialog.
Cairia novamente em resolver uma situação, e outra não.
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

Atualizações Hwgui 28/10/2021

Mensagem por JoséQuintas »

Enviei os três testes pra lá.
Fiz a sugestão de acrescentar na dialog a opção de definir o parent, como quebra-galho.

Agora é pensar numa alternativa automática, o que não é fácil.
Pra cada situação é uma solução diferente, precisaria tentar mapear, ou comparar com outras GUIs como isso é feito, que tirando HWGUI só sobra HMG.
Por exemplo, se owner button não serve, quando for owner button é vincular com o Parent do owner button, como fiz no test3.
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
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Atualizações Hwgui 28/10/2021

Mensagem por Itamar M. Lins Jr. »

Olá!
BTW, you may set ::oParent to any window or dialog, which you need, after the INIT DIALOG and before ACTIVATE.
Isso foi o que ele disse, mas estava funcionando, depois ele alterou algo que ocorre o BUG. Pra mim está errado, e os fontes antigos ?
Vai precisar colocar :Parent ?
A Hwgui que deve detectar e colocar automático isso.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Atualizações Hwgui 28/10/2021

Mensagem por JoséQuintas »

hwgui.png
Olhe outra alteração que eu encontrei, antes daquela
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

Atualizações Hwgui 28/10/2021

Mensagem por JoséQuintas »

Fugindo um pouco do assunto, mas de certa forma relacionado...

Código: Selecionar todos

   IF ::lModal
      ::pGT  := hb_gtCreate( "WVG" )
      ::pGTp := hb_gtSelect( ::pGT )
   ELSE
      hb_gtReload( "WVG" )
      ::pGT := hb_gtSelect()
   ENDIF
No meu aplicativo, por usar multithread, uso a opção 2, que é tudo NÃO MODAL.
As janelas ficam independentes, apenas presas à Main Window.

Está aí a solução pras dialogs NOMODAL da hwgui, prender à Main Window.
Isso não significa depender dela, significa apenas que quem "segura" a janela NOMODAL é a Main.

Código: Selecionar todos

   hParent := Iif( ::oParent != Nil .AND. ;
      __ObjHasMsg( ::oParent, "HANDLE" ) .AND. !Empty( ::oParent:handle ), ;
      ::oParent:handle, Iif( ( oWnd := HWindow():GetMain() ) != Nil,  ;
      oWnd:handle, hwg_Getactivewindow() ) )
E olhando esse pedaço da hwgui, você vê que era assim, mas foi alterado em 06 de agosto.
Se todo resto falhar, usa a Main, e somente se não existir, usa a janela ativa.
Aquele DlgModal entrou antes disso pra tudo, sem considerar se é modal/nomodal.
Mesmo assim, temos que considerar a outra parte, aonde cria a janela propriamente dita.

É muito interessante, quando uma coisa que parece não ter nada a ver, tem tudo a ver.
Eu disse... os fontes tem muita coisa interessante escondida.

E isso me dá outra idéia:
E se.... eu jogar o handle da Main GTWVG na Dialog da hwgui? será que libera geral?
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