FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Minimizar varios formularios a la vez
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Minimizar varios formularios a la vez
Posted: Wed Jul 24, 2019 08:35 AM

Hola foro,

Estoy manejando 2 formularios o ventanas. Una tiene el MAIN del programa y el otro es llamado en forma NO MODAL.

Como podria hacer para que cuando el formulario que contiene el MAIN se minimize pueda minimizar los otros formularios abiertos. LO que quiero hacer es algo parecido a lo que se hace cuado el formulario es MDI pero sin utlilizarlos como tal

Atento a sus comentarios

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 8523
Joined: Tue Dec 20, 2005 07:36 PM
Re: Minimizar varios formularios a la vez
Posted: Wed Jul 24, 2019 12:01 PM
Podrias poner una imagen para mejor comprender?

Creo que la mejor forma sea usando MDICHILD tipo asi:



saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 8523
Joined: Tue Dec 20, 2005 07:36 PM
Re: Minimizar varios formularios a la vez
Posted: Wed Jul 24, 2019 12:02 PM
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Minimizar varios formularios a la vez
Posted: Wed Jul 24, 2019 12:02 PM
karinha wrote:Podrias poner una imagen para mejor comprender?

Creo que la mejor forma sea usando MDICHILD tipo asi:



saludos.


Hola Joao,

Quiero hacer exactamente lo que hace MDI / MDICHILD entre 2 ventanas pero sin usar MDI

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Minimizar varios formularios a la vez
Posted: Wed Jul 24, 2019 12:15 PM

Mira a ver si te ayuda a implementarlo

viewtopic.php?f=3t=36244start=0hilit=dialog+mdichild

&&&

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Minimizar varios formularios a la vez
Posted: Wed Jul 24, 2019 12:19 PM
cnavarro wrote:Mira a ver si te ayuda a implementarlo

viewtopic.php?f=3&t=36244&start=0&hilit=dialog+mdichild


Gracias maestro, funciona parcialmente ya que necesito:

- Que no sea Modal
- Que tenga boton de minimizar

Es posible incorporar esto?

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Minimizar varios formularios a la vez
Posted: Wed Jul 24, 2019 12:38 PM

No Modal es, si no no se prodría hacer
Pero, lo has probado?

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Minimizar varios formularios a la vez
Posted: Wed Jul 24, 2019 12:41 PM
cnavarro wrote:No Modal es, si no no se prodría hacer
Pero, lo has probado?


No modal pero me deja siempre el dialogo visible la idea es que lo compagine entre dialogos y al minimizar que se vaya a la barra de tareas

use NOWAIT y no me dio ese resultado

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Minimizar varios formularios a la vez
Posted: Wed Jul 24, 2019 12:56 PM
Add this code to the main window, before activating it.
Code (fw): Select all Collapse
   oWnd:bResized  := <|nType|
      local aWnd  := GetAllWin()
      if nType == 1
         AEval( aWnd, { |o| If( o:ClassName == "TWINDOW" .and. o:hWnd != oWnd:hWnd, ;
                            o:Iconize(), nil ) } )
      endif
      return nil
      >
Regards



G. N. Rao.

Hyderabad, India
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Minimizar varios formularios a la vez
Posted: Wed Jul 24, 2019 01:04 PM
nageswaragunupudi wrote:Add this code to the main window, before activating it.
Code (fw): Select all Collapse
   oWnd:bResized  := <|nType|
      local aWnd  := GetAllWin()
      if nType == 1
         AEval( aWnd, { |o| If( o:ClassName == "TWINDOW" .and. o:hWnd != oWnd:hWnd, ;
                            o:Iconize(), nil ) } )
      endif
      return nil
      >


Hello Mr Rao, sorry I couldn't gei it

Code (fw): Select all Collapse
#include "fivewin.ch"

#define AS_DIALOG

function Main()

   local oWnd, oBar, oMenu

   SetGetColorFocus()

   DEFINE WINDOW oWnd MDI TITLE "DIALOG IN WINDOW"
   DEFINE BUTTONBAR oBar OF oWnd SIZE 100,32 2007

   DEFINE BUTTON OF oBar PROMPT "DIALOG"     CENTER ACTION CreateDialog( AS_DIALOG )

   ACTIVATE WINDOW oWnd

return nil


static function CreateDialog( nAs )

   local oDlg

   DEFINE DIALOG oDlg TITLE "DIALOGO" ;
   STYLE nOr( WS_POPUP, WS_VISIBLE, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME,;
                               WS_MINIMIZEBOX )


   ACTIVATE DIALOG oDlg CENTERED NOWAIT

return oDlg

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Minimizar varios formularios a la vez
Posted: Wed Jul 24, 2019 01:21 PM
Non modal resizable dialogs are always minimized when the main window is minimized.
You do not have to write any special code to do that.
Test this program:
Code (fw): Select all Collapse
#include "fivewin.ch"

function TestMin()

   local oWnd, oBar

   DEFINE WINDOW oWnd
   DEFINE BUTTONBAR oBar OF oWnd SIZE 100,32 2007
   DEFINE BUTTON OF oBar PROMPT "Dialog" ACTION OpenDlg()

   oWnd:nWidth    := 800
   oWnd:nHeight   := 600

   ACTIVATE WINDOW oWnd CENTERED

return nil

function OpenDlg()

   local oDlg

   DEFINE DIALOG oDlg RESIZABLE
   ACTIVATE DIALOG oDlg CENTERED NOMODAL

return nil

If the main window is minimized, the non-modal dialog also is minimized.

Instead of writing this long:
Code (fw): Select all Collapse
   DEFINE DIALOG oDlg TITLE "DIALOG" ; 
   STYLE nOr ( WS_POPUP, WS_VISIBLE, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME ;; 
                               WS_MINIMIZEBOX )

you can simply write
Code (fw): Select all Collapse
DEFINE DIALOG oDlg TITLE "DIALOG" RESIZABLE
Regards



G. N. Rao.

Hyderabad, India
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Minimizar varios formularios a la vez
Posted: Wed Jul 24, 2019 01:27 PM
nageswaragunupudi wrote:Non modal resizable dialogs are always minimized when the main window is minimized.
You do not have to write any special code to do that.
Test this program:
Code (fw): Select all Collapse
#include "fivewin.ch"

function TestMin()

   local oWnd, oBar

   DEFINE WINDOW oWnd
   DEFINE BUTTONBAR oBar OF oWnd SIZE 100,32 2007
   DEFINE BUTTON OF oBar PROMPT "Dialog" ACTION OpenDlg()

   oWnd:nWidth    := 800
   oWnd:nHeight   := 600

   ACTIVATE WINDOW oWnd CENTERED

return nil

function OpenDlg()

   local oDlg

   DEFINE DIALOG oDlg RESIZABLE
   ACTIVATE DIALOG oDlg CENTERED NOMODAL

return nil

If the main window is minimized, the non-modal dialog also is minimized.


Mr Rao,

Setting the dialog as NOMODAL works as I want. The only issue is when I minimize them, I can not find them on the taskbar

How could I solve this???

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Minimizar varios formularios a la vez
Posted: Wed Jul 24, 2019 01:35 PM

That is Windows' behavior.
But when the main window is restored, the non-modal dialogs are also restored.

Regards



G. N. Rao.

Hyderabad, India
Posts: 1276
Joined: Tue Dec 28, 2010 01:29 PM
Re: Minimizar varios formularios a la vez
Posted: Wed Jul 24, 2019 01:37 PM
nageswaragunupudi wrote:That is Windows' behavior.
But when the main window is restored, the non-modal dialogs are also restored.


Yes, thanks a lot

FWH 25.12

Harbour/Hbmk2

Microsoft Visual C++

MySql 8.0

Antigravity

Continue the discussion