Have you overridden the "onActivate" or WM_ACTIVE handlers for either the
parent form or the child windows & not called the inherited implementation?
(I accidentally did this once and found that various menus were not
merging/updating)

Also (more likely), set WindowMenu to a top-level menu item, not to a
sub-menu item.  If you don't have any children then it doesn't seem to work
either so give it some children like "Tile, Cascade" ...

i.e.

WindowMenuItem  =           &Windows   (same line as File/Edit/Help etc...)
Tile1           =           `Tile      (subitem)
Cascade1        =           `Cascade   (subitem)

Set Form.WindowMenu to "WindowMenuItem".

If you set WindowMenu to "Cascade1", thinking that it will append the window
list after it, it doesn't seem to work either.


> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On
> Behalf Of Donovan J. Edye
> Sent: Wednesday, 20 September 2000 10:50
> To: Multiple recipients of list delphi
> Subject: RE: [DUG]: [Q] MDI - Child Windowns....
>
>
> R,
>
> Thanks for all the code.... One small problem. The Window Menu
> does not get
> populated...... I have set my MDI Form (FormStyle = fsMDIForm) WindowMenu
> property to a menu item. As a test I create the following forms with the
> following code:
>
> procedure TfrmMDIMain.mnuMainFileOpenClick(Sender: TObject);
> var
>    F, F2 : TfrmLayoutInstance;
> begin
>      Application.CreateForm(TfrmLayoutInstance, F);
>      F.Caption := IntToStr(frmMDIMain.MDIChildCount);
>      F.NamNAMEditor1.LoadNAMFile(ExtractFilePath(Application.ExeName) +
> 'Test.NAM');
>      Application.CreateForm(TfrmLayoutInstance, F2);
>      F2.Caption := IntToStr(frmMDIMain.MDIChildCount);
>      F2.NamNAMEditor1.LoadNAMFile(ExtractFilePath(Application.ExeName) +
> 'Test2.NAM');
> end;
>
> (TfrmLayoutInstance.FormStyle = fsMDIChild) But nothing appears in the
> Window Menu. Something real obvious here that I am missing.......
>
> ------------------------------------------------------------------------
> --Donovan
> Donovan J. Edye [www.edye.wattle.id.au]
> Namadgi Systems, Delphi Developer
> Web: www.namsys.com.au E-Mail: [EMAIL PROTECTED]
> Voice: +61 2 6285-3460 Fax: +61 2 6285-3459
> TVisualBasic = Class(None);
> GXExplorer [http://www.gexperts.com/gxexplorer/] Freeware Windows Explorer
> replacement. Also includes freeware delphi windows explorer components.
> ------------------------------------------------------------------------
>
>
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On
> Behalf Of Rohit Gupta
> Sent: Tuesday, 19 September 2000 19:45
> To: Multiple recipients of list delphi
> Subject: Re: [DUG]: [Q] MDI - Child Windowns....
>
>
> Some is built in, other you have to do... heres my code...
>
> procedure Tfrm_App_Main.mniCascadeClick(Sender: TObject);
> begin
>   Cascade;
> end;
>
> procedure Tfrm_App_Main.mniTileClick(Sender: TObject);
> begin
>   Tile;
> end;
>
> procedure Tfrm_App_Main.mniArrangeIconsClick(Sender: TObject);
> begin
>   ArrangeIcons;
> end;
>
> procedure Tfrm_App_Main.mniPrintWindowClick(Sender: TObject);
> begin
>   if ActiveMDICHild <> nil
>   then if Confirm ('Print current window ?',mrYes) = mrYes
>        then ActiveMDIChild.Print;
> end;
>
> procedure Tfrm_App_Main.mniMinimizeWinClick(Sender: TObject);
> begin
>   if ActiveMDIChild <> nil
>   then with ActiveMDIChild
>        do if biSystemMenu in BorderIcons
>           then WindowState := wsMinimized;
> end;
>
> procedure Tfrm_App_Main.mniMinimizeAllClick(Sender: TObject);
> var
>   I: Integer;
> begin
>   { Must be done backwards through the MDIChildren array }
>   for I := MDIChildCount - 1 downto 0
>   do with MDIChildren[I]
>      do if biSystemMenu in BorderIcons
>         then WindowState := wsMinimized;
> end;
>
> procedure Tfrm_App_Main.mniCloseWindowClick(Sender: TObject);
> begin
>   if ActiveMDIChild <> nil
>   then ActiveMDIChild.Close;
> end;
>
> procedure Tfrm_App_Main.mniCloseAllClick(Sender: TObject);
> var
>   I: Integer;
> begin
>   { Close Active Forms first }
>   for I := MDIChildCount - 1 downto 0
>   do if MDIChildren[I].Enabled
>      then MDIChildren[I].Close;
>   Application.ProcessMessages;
>   { Now Close the Rest }
>   for I := MDIChildCount - 1 downto 0
>   do MDIChildren[I].Close;
> end;
>
> procedure Tfrm_App_Main.UpdateMenuItems(Sender: TObject);
> var
>   Ok : Boolean;
> begin
>   Ok                        := MDIChildCount > 0;
>   mniCascade.Enabled        := Ok;
>   mniTile.Enabled           := Ok;
>   mniArrangeIcons.Enabled   := Ok;
>   mniMinimizeWindow.Enabled := Ok;
>   mniMinimizeAll.Enabled    := Ok;
>   mniCloseWindow.Enabled    := Ok;
>   mniCloseAll.Enabled       := Ok;
> end;
>
> Above triggered thusly...
>
>   Screen.OnActiveFormChange := UpdateMenuItems;
>
> And set the MainForm.WindowMenu to point to the menu you want the
> open forms
> to appear in.
>
> Regards
>
> -----Original Message-----
> From: Donovan J. Edye <[EMAIL PROTECTED]>
> To: Multiple recipients of list delphi <[EMAIL PROTECTED]>
> Date: Tuesday, 19 September 2000 19:03
> Subject: [DUG]: [Q] MDI - Child Windowns....
>
>
> G'Day,
>
> I am writing an MDI app and need to implement the standard Window
> Menu (One
> that shows all the open MDI children). What is the best way to
> maintain that
> menu item? Is there something built into Delphi that notifies you when
> children are destroyed etc. I am sure I am missing something obvious
> here......
>
> TIA
>
> ------------------------------------------------------------------------
> --Donovan
> Donovan J. Edye [www.edye.wattle.id.au]
> Namadgi Systems, Delphi Developer
> Web: www.namsys.com.au E-Mail: [EMAIL PROTECTED]
> Voice: +61 2 6285-3460 Fax: +61 2 6285-3459
> TVisualBasic = Class(None);
> GXExplorer [http://www.gexperts.com/gxexplorer/] Freeware Windows Explorer
> replacement. Also includes freeware delphi windows explorer components.
> ------------------------------------------------------------------------
>
> ------------------------------------------------------------------
> ---------
>     New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
>                   Website: http://www.delphi.org.nz
> To UnSub, send email to: [EMAIL PROTECTED]
> with body of "unsubscribe delphi"
>
>
> ------------------------------------------------------------------
> ---------
>     New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
>                   Website: http://www.delphi.org.nz
> To UnSub, send email to: [EMAIL PROTECTED]
> with body of "unsubscribe delphi"
>
> ------------------------------------------------------------------
> ---------
>     New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
>                   Website: http://www.delphi.org.nz
> To UnSub, send email to: [EMAIL PROTECTED]
> with body of "unsubscribe delphi"

---------------------------------------------------------------------------
    New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
                  Website: http://www.delphi.org.nz
To UnSub, send email to: [EMAIL PROTECTED] 
with body of "unsubscribe delphi"

Reply via email to