Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Formular nur 1 mal erstellen lassen (https://www.delphipraxis.net/110310-formular-nur-1-mal-erstellen-lassen.html)

Overclocker 16. Mär 2008 14:49


Formular nur 1 mal erstellen lassen
 
Hallo nochmal :),

folgende Frage. Bei einem Klick auf einen Butto wird ein formular erzeugt, dass als MDI Child direkt im Programm geöffnet wird.

Jetzt zu meiner Frage. Ich möchte, dass bei einem erneuten klick nichts mehr passiert, d. h. es soll MAX. 1 Formular erzeugt werden (damit nicht 5 formulare hintereinanderliegen).

Meine Idee ist, das ganze mit Variable zu lösen, d. h. z. B. beim OnCreate eine variable zu füllen und diese dann beim button wieder abzufragen usw.
Das ganze find ich aber nicht wirklich schön und verursacht nur unnötigen quellcode.

Gibt es eine Funktion oder ähnliches, wo ich schon abfragen kann, ob ein formular schon vorhanden ist?

Dankeschön

mkinzler 16. Mär 2008 14:54

Re: Formular nur 1 mal erstellen lassen
 
Überprüfe, ob schon eine Instanz besteht:

Delphi-Quellcode:
if not Assigned( Form) then

Overclocker 16. Mär 2008 14:54

Re: Formular nur 1 mal erstellen lassen
 
und wieder was dazugelernt :), werd ich mir mal genau anschauen das ganze danke :)

sx2008 16. Mär 2008 14:57

Re: Formular nur 1 mal erstellen lassen
 
Du müsstest Screen.Forms[] durchlaufen und prüfen, ob es schon ein Formular von deiner Klasse gibt.
Delphi-Quellcode:
for i:=0 to screen.FormsCount-1 do
begin
  if screen.Forms[i] is TMyMDIClient then ....
Ich an deiner Stelle würde viele MDI-Childs zulassen und dafür sorgen, dass eine Änderung in einem MDI-Child sich in den anderen Formularen entsprechend durchschlägt.

PS: bei MDI-Forms darf man die globlen Formvariablen, die Delphi pro Unit anlegt nicht benützen. Ansonsten würde das MDI-Konzept ad absurdum geführt.

Overclocker 16. Mär 2008 15:07

Re: Formular nur 1 mal erstellen lassen
 
also der vorschlag von mkinzler ist shcon sehr gut, nur wenn ich ich dann das mdi child schließe (destroy), dann erstellt es mir beim erneuten klick auf den button kein neues child mehr, d. h. ich kanns nicht mehr aufrufen

mal schaun wie ich das umgehen kann

dominikkv 16. Mär 2008 15:08

Re: Formular nur 1 mal erstellen lassen
 
Zitat:

Zitat von Overclocker
also der vorschlag von mkinzler ist shcon sehr gut, nur wenn ich ich dann das mdi child schließe (destroy), dann erstellt es mir beim erneuten klick auf den button kein neues child mehr, d. h. ich kanns nicht mehr aufrufen

mal schaun wie ich das umgehen kann

Du musst mit FreeAndNil(instanz) freigeben

Overclocker 16. Mär 2008 15:12

Re: Formular nur 1 mal erstellen lassen
 
jep das funktioniert auch,aber ich frag mich irgendwie immer, wie kommt IHR so schnell drauf ich such zwar auch in der delphi hilfe aber genau das zu finden dauert bei mir imemr sehr sehr lang (inkl. internet recherche^^)

wo findet ihr das alles bzw. wie erschließt ihr euch das ganze immer?

mkinzler 16. Mär 2008 15:13

Re: Formular nur 1 mal erstellen lassen
 
Erfahrung


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz