Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - erstellen eines MDIChild Formular nur 1 mal zulassen


Fighti - Di 31.08.04 10:54
Titel: erstellen eines MDIChild Formular nur 1 mal zulassen
Hallo,
wie kann ich abfangen das nur eine Instanz eines MDIChild-Formular erstellt werden kann? Also jedes MDIChild nur einmal geöffnet werden kann.

Für alle Tipps vielen Dank.

mfg Fighti


Viper - Di 31.08.04 11:03

Guten Morgen.

Du hast in deinem Hauptformular ein Array, dass alle bisher erstellten MDIChildren enthält. Da musst du dann nur abfragen, ob schon ein Children vom selben Typ, wie das zu erstellende, existiert oder nicht.

Beispiel:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
var
  i: integer;
  Exists: Boolean;
begin
  Exists := False; //Exists gibt an, ob das Formular schon existiert
  for i := 0 to MainForm.MDIChildCount - 1 do //MainForm ist das Hauptformular
  begin
    if MainForm.MDIChildren[i] is TTestChild then //TTestChild ist ein MDIChild-Formular
    begin
      Exists := True;
      Break;
    end;
  end;

  if not Exists then
    //da das Formular noch nicht existiert kannst du es jetzt hier erstellen
end;


Fighti - Di 31.08.04 14:47

@Viper: vielen dank für deinen Tipp. das hat mir sehr weiter geholfen.

gruss fighti


Viper - Di 31.08.04 17:16

Hallo.

Freut mich, dass ich dir helfen konnte. Hab aber gerade noch einen Fehler entdeckt.
Es muss so heißen, sonst bekommst du einen Fehler:

Quelltext
1:
for i := 0 to MainForm.MDIChildCount - 1 do                    

Habe es oben natürlich auch verbessert.