Clipper On Line • Ver Tópico - hprogres e NewBox()

hprogres e NewBox()

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

hprogres e NewBox()

Mensagempor Itamar M. Lins Jr. » 27 Out 2021 21:05

Olá!
Vou precisar verificar isso:
oBar   := HProgressBar():NewBox( "Ordenando, "+lTrim(str(nRec,9))+" De "+lTrim(str(nTRec,9))+" Registro(s)",,,350,,nTRec)
index on ticket tag mo99 for &cQuery temporary eval {||oBar:Step(),.t.}
mo->(dbGoTop())
oBar:Close()

Error BASE/1072  Erro nos parÆ’metros: <>
Called from source\winapi\hdialog.prg->HWG_ENDDIALOG(551)
Called from source\winapi\hprogres.prg->HPROGRESSBAR:CLOSE(190)
Called from prg\FecharMovimento.prg->PROCESSADIAS(164)

Amanhã vou tentar isolar o BUG e avisar lá para alguém corrigir.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Erro em hwg_EndDialog()

Mensagempor Itamar M. Lins Jr. » 27 Out 2021 21:13

Olá!
No fonte a classe hDialog está assim:

 
CLASS HDialog INHERIT HWindow
...
  METHOD Close()    INLINE hwg_EndDialog( ::handle )


Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Erro em hwg_EndDialog()

Mensagempor Itamar M. Lins Jr. » 27 Out 2021 21:16

Olá!
Método close() da hprogress.prg
METHOD CLOSE()

   hwg_Destroywindow( ::handle )
   IF ::lNewBox
      hwg_EndDialog( ::oParent:handle )
   ENDIF

   RETURN Nil


Suadações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Erro em hwg_EndDialog()

Mensagempor JoséQuintas » 27 Out 2021 21:48

Só me chamou a atenção o NewBox() criar uma dialog NOMODAL, não sei se deveria ser assim.
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: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Erro em hwg_EndDialog()

Mensagempor JoséQuintas » 27 Out 2021 22:23

A parte que comentou está correta:
METHOD NewBox( cTitle, nLeft, nTop, nWidth, nHeight, maxPos, nRange, bExit, lPercent ) CLASS HProgressBar
...
   INIT DIALOG ::oParent TITLE cTitle       ;
      At nLeft, nTop SIZE nWidth, nHeight   ;
      STYLE WS_POPUP + WS_VISIBLE + WS_CAPTION + WS_SYSMENU + WS_SIZEBOX + iif( nTop == 0, DS_CENTER, 0 ) + DS_SYSMODAL + MB_USERICON
...
   IF bExit != Nil
      ::oParent:bDestroy := bExit
   ENDIF

   ACTIVATE DIALOG ::oParent NOMODAL

   ::id := ::NewId()
   ::Activate()
   ::oParent:AddControl( Self )

   RETURN Self


Quando usa NewBox() é criada uma janela Dialog com o progressbar dentro.
::oParent do NewBox() contém essa Dialog.

METHOD CLOSE()

   hwg_Destroywindow( ::handle )
   IF ::lNewBox
      hwg_EndDialog( ::oParent:handle )
   ENDIF

   RETURN Nil


o close() do progressbar destrói primeiro a janela da progressbar, e depois, se foi newbox criando dialog, destrói a dialog criada.
só estranhei o nomodal, porque teoricamente se não tem parada, fecha sozinho.
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: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

hprogres e NewBox()

Mensagempor JoséQuintas » 28 Out 2021 08:19

Apesar do erro ser no mesmo lugar do outro, a causa parece diferente, por isso separei as mensagens do outro tópico.
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: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

hprogres e NewBox()

Mensagempor JoséQuintas » 28 Out 2021 08:22

METHOD CLOSE()

   hwg_Destroywindow( ::handle )
   IF ::lNewBox
      hwg_EndDialog( ::oParent:handle )
   ENDIF

   RETURN Nil


Faça um teste aonde envia o Close(), antes do close, testando o que tem em ::oParent:Handle
É pra ter uma variável do tipo pointer - valtype( variavelprogressbar::oParent:Handle ) == "P"
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: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

hprogres e NewBox()

Mensagempor JoséQuintas » 28 Out 2021 08:26

Aproveitando...

Então... não tenho como testar.
Pra simular esse progressbar eu teria que fazer outras coisas que ainda não cheguei lá.
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: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

hprogres e NewBox()

Mensagempor JoséQuintas » 28 Out 2021 08:35

achei um exemplo nos samples, mas nele vai normal

Function Test()
Local cMsgErr := "Bar doesn't exist"

        PREPARE FONT oFont NAME "Courier New" WIDTH 0 HEIGHT -11

        INIT DIALOG oForm CLIPPER NOEXIT TITLE "Progress Bar Demo";
             FONT oFont ;
             AT 0, 0 SIZE 700, 425 ;
             STYLE DS_CENTER + WS_VISIBLE + WS_POPUP + WS_VISIBLE + WS_CAPTION + WS_SYSMENU ;
             ON EXIT {||Iif(oBar==Nil,.T.,(oBar:Close(),.T.))}

             @ 300, 395 BUTTON 'Reset Bar'  SIZE 75,25 ;
               ON CLICK {|| Iif(oBar==Nil,hwg_Msgstop(cMsgErr),oBar:Reset()) }

             @ 380, 395 BUTTON 'Step Bar'   SIZE 75,25 ;
               ON CLICK {|| Iif(oBar==Nil,hwg_Msgstop(cMsgErr),oBar:Step()) }

             @ 460, 395 BUTTON 'Create Bar' SIZE 75,25 ;
               ON CLICK {|| oBar := HProgressBar():NewBox( "Testing ...",,,,, 10, 100 ) }

             @ 540, 395 BUTTON 'Close Bar'  SIZE 75,25 ;
               ON CLICK {|| Iif(oBar==Nil,hwg_Msgstop(cMsgErr),(oBar:Close(),oBar:=Nil)) }

             @ 620, 395 BUTTON 'Close'      SIZE 75,25 ;
               ON CLICK {|| oForm:Close() }

        ACTIVATE DIALOG oForm

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

hprogres e NewBox()

Mensagempor JoséQuintas » 28 Out 2021 08:54

progbar.png


Mas é muito feia, qual a vantagem dessa?
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: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

hprogres e NewBox()

Mensagempor Itamar M. Lins Jr. » 28 Out 2021 09:23

Olá!
Com tema dos windows "gafanhoto". Ai está sem os temas.

Aqui não aconteceu o erro.
Acho que ele está fechando a progress tem que ficar sem esse X ai no canto.
Nisso o CLOSE vai fechar mais o quê ?
Esse é o mesmo erro lá da DIALOG. No mesmo local -> oDlg:handle != handle.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

hprogres e NewBox()

Mensagempor JoséQuintas » 28 Out 2021 09:54

Nesse fonte tem os testes se a janela existe.
Se fechar no X, os testes evitam erro.
Esse X não deveria existir.
A janela deveria ser trocada pela outra que não tem X.
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: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

hprogres e NewBox()

Mensagempor JoséQuintas » 28 Out 2021 10:05

      STYLE WS_POPUP + WS_VISIBLE + WS_CAPTION + /* WS_SYSMENU + */ WS_SIZEBOX + iif( nTop == 0, DS_CENTER, 0 ) + DS_SYSMODAL + MB_USERICON


Mas.... falta confirmar se este comportamento foi depois da alteração:

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

hprogres e NewBox()

Mensagempor JoséQuintas » 28 Out 2021 10:10

progbar.png


O "problema" já existia antes.
A janela da barra de progresso fica por cima de tudo.
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: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

hprogres e NewBox()

Mensagempor JoséQuintas » 28 Out 2021 10:12

DS_SYSMODAL
This style is obsolete and is included for compatibility with 16-bit versions of Windows. If you specify this style, the system creates the dialog box with the WS_EX_TOPMOST style. This style does not prevent the user from accessing other windows on the desktop.
Do not combine this style with the DS_CONTROL style.


O estilo usado é pra isso mesmo, precisamos verificar qual a alternativa.

https://docs.microsoft.com/en-us/windows/win32/dlgbox/dialog-box-styles
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: 18008
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: Google [Bot] e 6 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