Clipper On Line • Ver Tópico - Atualizações Hwgui 28/10/2021

Atualizações Hwgui 28/10/2021

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Atualizações Hwgui 28/10/2021

Mensagempor Itamar M. Lins Jr. » 30 Out 2021 09:50

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

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6959
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 508 vezes

Atualizações Hwgui 28/10/2021

Mensagempor JoséQuintas » 30 Out 2021 10:26

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, 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: 18159
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Atualizações Hwgui 28/10/2021

Mensagempor JoséQuintas » 30 Out 2021 10:42

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

#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, 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: 18159
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Atualizações Hwgui 28/10/2021

Mensagempor JoséQuintas » 30 Out 2021 10:52

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, 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: 18159
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Atualizações Hwgui 28/10/2021

Mensagempor JoséQuintas » 30 Out 2021 10:58

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, 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: 18159
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Atualizações Hwgui 28/10/2021

Mensagempor JoséQuintas » 30 Out 2021 11:10


#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, 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: 18159
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Atualizações Hwgui 28/10/2021

Mensagempor JoséQuintas » 30 Out 2021 11:23

Os tres testes:

com a segunda modal
com a segunda nomodal
passando parent

test.zip
(1.43 KiB) Baixado 26 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, 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: 18159
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Atualizações Hwgui 28/10/2021

Mensagempor JoséQuintas » 30 Out 2021 11:52

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, 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: 18159
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Atualizações Hwgui 28/10/2021

Mensagempor Itamar M. Lins Jr. » 30 Out 2021 12:25

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

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6959
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 508 vezes

Atualizações Hwgui 28/10/2021

Mensagempor JoséQuintas » 30 Out 2021 17:38

hwgui.png


Olhe outra alteração que eu encontrei, antes daquela
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: 18159
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Atualizações Hwgui 28/10/2021

Mensagempor JoséQuintas » 30 Out 2021 19:47

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

   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.

   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, 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: 18159
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Anterior



Retornar para HwGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 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