AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Formular nur 1 mal erstellen lassen

Ein Thema von Overclocker · begonnen am 16. Mär 2008 · letzter Beitrag vom 16. Mär 2008
Antwort Antwort
Overclocker

Registriert seit: 10. Jan 2007
215 Beiträge
 
#1

Formular nur 1 mal erstellen lassen

  Alt 16. Mär 2008, 15:49
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Formular nur 1 mal erstellen lassen

  Alt 16. Mär 2008, 15:54
Überprüfe, ob schon eine Instanz besteht:

if not Assigned( Form) then
Markus Kinzler
  Mit Zitat antworten Zitat
Overclocker

Registriert seit: 10. Jan 2007
215 Beiträge
 
#3

Re: Formular nur 1 mal erstellen lassen

  Alt 16. Mär 2008, 15:54
und wieder was dazugelernt , werd ich mir mal genau anschauen das ganze danke
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Formular nur 1 mal erstellen lassen

  Alt 16. Mär 2008, 15:57
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.
  Mit Zitat antworten Zitat
Overclocker

Registriert seit: 10. Jan 2007
215 Beiträge
 
#5

Re: Formular nur 1 mal erstellen lassen

  Alt 16. Mär 2008, 16:07
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
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Formular nur 1 mal erstellen lassen

  Alt 16. Mär 2008, 16:08
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
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Overclocker

Registriert seit: 10. Jan 2007
215 Beiträge
 
#7

Re: Formular nur 1 mal erstellen lassen

  Alt 16. Mär 2008, 16:12
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?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Formular nur 1 mal erstellen lassen

  Alt 16. Mär 2008, 16:13
Erfahrung
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz