Beim OnClick auf Button überprüfen ob ein MDI-Child schon geöffnet ist
-
Hmm, das Problem bei einer MDI ist, dass das Form schon beim Instanziieren angezeigt wird. Also fällt das
...->ShowModal();
weg. Wenn ich dann aber anschließend das delete mache, dann ist das Formular auch gleich wieder weg.
-
Ähhmm... MDI...? Kann es sein, dass du im falschen Forum gepostet hast?
-
Würde ich jetzt eigentlich nicht sagen, warum?
-
Du in der Titelüberschrift steht
Beim OnClick auf Button überprüfen ob ein MDI-Child schon geöffnet ist
scheibar bist du hier falsch?
-
@Kolumbus
du hast etwas vergessen, er meinte MDI-Child-Fenster und davon können mit deiner Methode x-beliebige erstellt werden. Ausserdem funktioniert ShowModal dabei nicht.
diese kleine Funktion sollte helfen:bool CheckForm(String name) { for (int i=0; i<Screen->FormCount; i++) { if (UpperCase(Screen->Forms[i]->Name) == UpperCase(name)) { Screen->Forms[i]->WindowState = wsMaximized; Screen->Forms[i]->BringToFront(); return true; } } return false; } //Verwendung void __fastcall TForm1::Button1Click(TObject *Sender) { if (!CheckForm("ChildForm1")) { TChildForm1 * ChildForm1= new TChildForm1(Application); } }
[Edit] etwas langsam heute
-
Wiso machst du den Umweg über Screen->Forms und nimmst nicht gleich die
MDI Childs?for (int i = MDIChildCount - 1; i >= 0; i--) { if ((AnsiString)MDIChildren[i]->ClassName() == "TForm_Test") { MDIChildren[i]->Show(); } }
-
ok, geht natürlich auch
-
Man hab ich gerade lange auf'm Schlauch gestanden...
-
Ich wunder mich schon, bin noch am probieren. aber ich denke so wird es klappen. Gebe gleich nochmal Info.
-
Funktioniert einwandfrei!
Vielen Dank!