How to close all?

how do i close all my child MDI forms in
 the master MDI Form?
How do i make the child MDI Forms change/minised into icons?
superboyAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

ronit051397Commented:
To minimize:
var
  I: Integer;
begin
  with Form1 do
    for I := MDIChildCount-1 downto 0 do
      MDIChildren[I].Close;
end;

To Close:
begin
  with Form1 do
    while MDIChildCount>0 do
      MDIChildren[0].Release;
end;
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
superboyAuthor Commented:
can u write the full code?
what is the MDIChildCount and MDIChildren?
0
ronit051397Commented:
What full code?
From Delphi Help file:

property MDIChildCount: Integer;

Run-time and read-only. The value of the MDIChildCount property is the number of child windows open in an MDI application.
----------------------------------------
property MDIChildren[I: Integer]: TForm;

Run-time and read-only. The MDIChildren property array provides access to a child window or form in an MDI application through an index value, I. The value of I is determined by the order in which the window was created. For example, the first MDI child window has an I value of 0.
----------------------------------------
property ActiveMDIChild: TForm;

Run-time and read only. The value of the ActiveMDIChild property is the form that currently has focus in an MDI application. This only applies if the form is of type fsMDIForm.
0
Cloud Class® Course: Microsoft Office 2010

This course will introduce you to the interfaces and features of Microsoft Office 2010 Word, Excel, PowerPoint, Outlook, and Access. You will learn about the features that are shared between all products in the Office suite, as well as the new features that are product specific.

superboyAuthor Commented:
must i declare the variables MDIChildCount, MDIChildren
 and so on?
0
ronit051397Commented:
No, It is already declared as a property. Delphi "knows" how many
childs are opened, and how to access them.
0
superboyAuthor Commented:
if i minismised the forms into icons..
will delphi assigned some default icons to the forms
and can i do a arrangeicons after that?
0
ronit051397Commented:
Yes.
0
superboyAuthor Commented:
how do i add a message dialog when closing each MDI Child form?
like to confirm whether the user want to close../or he want to save what he has done in the MDI child form?

is there a way to check if something is written in the MDI child form when i has a memo in the child form...?
0
superboyAuthor Commented:
hey ronit, i try your method
To Close:
               begin
                 with Form1 do
                   while MDIChildCount>0 do
                   MDIChildren[0].Release;
               end;
and it crash my application...

the minimise code u wrote, i try it and it is actually for the
close all function...what abt minimised to icons?

0
ronit051397Commented:
I am checking...
0
ronit051397Commented:
Sorry my mistake. If you use Delphi 3, write the following code:

To Minimize:

procedure TMainForm.Button1Click(Sender: TObject);
var I: byte;
begin
LockWindowUpdate(Handle);
if MDIChildCount>0 then
  for I := MDIChildCount-1 downto 0 do
    MDIChildren[I].WindowState:=wsMinimized;
LockWindowUpdate(0);
end;

To close:
procedure TMainForm.Button1Click(Sender: TObject);
var I: byte;
begin
LockWindowUpdate(Handle);
if MDIChildCount>0 then
  for I := MDIChildCount-1 downto 0 do
    MDIChildren[I].Close;
LockWindowUpdate(0);
end;

and on the OnClose event of the child form write:
Action:=cafree;
0
superboyAuthor Commented:
LockWindowUpdate(Handle);
what does this do?
0
superboyAuthor Commented:
how do i restore all the MDI child windows to their previous
windowstate ? i want to do something like tile..but it does not work..
0
d003303Commented:
you can use the Cascade, Tile and ArrangeIcons methods of the MDI parent for that.
0
ronit051397Commented:
LockWindowUpdate(handle) freezes the screen until you call LockWindowUpdate(0). This, in order to increase performance.
0
superboyAuthor Commented:
LockWindowUpdate(handle) does this make any app hang?
0
ronit051397Commented:
No, It's just preventing from screen to be refreshed while something is being processed.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Delphi

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.