Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Alle MDI-Child-Fenster schließen


colaka - Fr 03.07.09 07:06
Titel: Alle MDI-Child-Fenster schließen
Hallo,

ich habe eine Anwendung mit mehreren MDI-Childfenstern und möchte, daß beim Öffnen eines ganz bestimmten Childfensters alle anderen Childfenster geschlossen werden, falls überhaupt eines geöffnet ist.

Gibt es so einen allgemeinen Befehl, mit dem man alle eventuell geöffneten Childfenster schließen kann?

Danke Ebi


jaenicke - Fr 03.07.09 10:51

Da musst du schon selbst alle durchgehen und alle anderen schließen, also so ungefähr.

Delphi-Quelltext
1:
2:
3:
  for i := MDIChildCount - 1 downto 0 do
    if MDIChildren[i] <> ... then
      MDIChildren[i].Close;


ffgorcky - Fr 03.07.09 13:47

Also ich bin auf dem MDI-Gebiet eigentlich noch unbewandert, aber ich denke mal, dass doch die Child-Fenster auch alle einen Namen haben, also müsste das dann so gehen (die Lösung von user profile iconjaenicke nur leicht abgewandelt):

Delphi-Quelltext
1:
2:
3:
for i := MDIChildCount - 1 downto 0 do    
   if not MDIChildren[i].Name=offenzulassendesFenster then      
      MDIChildren[i].Close;

Das Ganze müsste ja aber auch mit (hoffentlich eindeutigen!) Fenstertiteln gehen:

Delphi-Quelltext
1:
2:
3:
for i := MDIChildCount - 1 downto 0 do    
   if not MDIChildren[i].Title=titelDesOffenzulassendenFensters then      
      MDIChildren[i].Close;


Damit könntest Du dann den Benutzer einen offenzulassenden Fenstertitel auswählen lassen.