Page 1 of 1

Minimizar varios formularios a la vez

Posted: Wed Jul 24, 2019 8:35 am
by Compuin
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

Re: Minimizar varios formularios a la vez

Posted: Wed Jul 24, 2019 12:01 pm
by karinha
Podrias poner una imagen para mejor comprender?

Creo que la mejor forma sea usando MDICHILD tipo asi:

Image

saludos.

Re: Minimizar varios formularios a la vez

Posted: Wed Jul 24, 2019 12:02 pm
by karinha

Re: Minimizar varios formularios a la vez

Posted: Wed Jul 24, 2019 12:02 pm
by Compuin
karinha wrote:Podrias poner una imagen para mejor comprender?

Creo que la mejor forma sea usando MDICHILD tipo asi:

Image

saludos.
Hola Joao,

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

Re: Minimizar varios formularios a la vez

Posted: Wed Jul 24, 2019 12:15 pm
by cnavarro
Mira a ver si te ayuda a implementarlo

http://forums.fivetechsupport.com/viewt ... g+mdichild

Re: Minimizar varios formularios a la vez

Posted: Wed Jul 24, 2019 12:19 pm
by Compuin
cnavarro wrote:Mira a ver si te ayuda a implementarlo

http://forums.fivetechsupport.com/viewt ... g+mdichild
Gracias maestro, funciona parcialmente ya que necesito:

- Que no sea Modal
- Que tenga boton de minimizar

Es posible incorporar esto?

Re: Minimizar varios formularios a la vez

Posted: Wed Jul 24, 2019 12:38 pm
by cnavarro
No Modal es, si no no se prodría hacer
Pero, lo has probado?

Re: Minimizar varios formularios a la vez

Posted: Wed Jul 24, 2019 12:41 pm
by Compuin
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

Re: Minimizar varios formularios a la vez

Posted: Wed Jul 24, 2019 12:56 pm
by nageswaragunupudi
Add this code to the main window, before activating it.

Code: Select all

   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
      >
 

Re: Minimizar varios formularios a la vez

Posted: Wed Jul 24, 2019 1:04 pm
by Compuin
nageswaragunupudi wrote:Add this code to the main window, before activating it.

Code: Select all

   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: Select all

#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

Re: Minimizar varios formularios a la vez

Posted: Wed Jul 24, 2019 1:21 pm
by nageswaragunupudi
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: Select all

#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: Select all

   DEFINE DIALOG oDlg TITLE "DIALOG" ; 
   STYLE nOr ( WS_POPUP, WS_VISIBLE, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME ;; 
                               WS_MINIMIZEBOX ) 
 
you can simply write

Code: Select all

DEFINE DIALOG oDlg TITLE "DIALOG" RESIZABLE
 

Re: Minimizar varios formularios a la vez

Posted: Wed Jul 24, 2019 1:27 pm
by Compuin
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: Select all

#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???

Re: Minimizar varios formularios a la vez

Posted: Wed Jul 24, 2019 1:35 pm
by nageswaragunupudi
That is Windows' behavior.
But when the main window is restored, the non-modal dialogs are also restored.

Re: Minimizar varios formularios a la vez

Posted: Wed Jul 24, 2019 1:37 pm
by Compuin
nageswaragunupudi wrote:That is Windows' behavior.
But when the main window is restored, the non-modal dialogs are also restored.
Yes, thanks a lot