AGB  ·  Datenschutz  ·  Impressum  







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

Abfrage ob Formular created

Ein Thema von Praktikant · begonnen am 24. Nov 2003 · letzter Beitrag vom 24. Nov 2003
Antwort Antwort
Seite 1 von 2  1 2      
Praktikant

Registriert seit: 24. Sep 2003
131 Beiträge
 
Delphi 5 Enterprise
 
#1

Abfrage ob Formular created

  Alt 24. Nov 2003, 08:48
Eigentlich was ganz simples:
Wie frage ich ab ob ein Formular created ist.

Erstelle zur Laufzeit ein paar Childformulare, wenn diese geöffnet sind soll im Timer was ausgeführt werden.

Tja, aber entweder gibt's eine Verletzung während der Laufzeit oder es ist schon ein Syntax Fehler
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Abfrage ob Formular created

  Alt 24. Nov 2003, 08:56
Hi,

wie wäre es wenn du in der Create Methode der Child Formulare eine Boolean Variable setzt.
Diese Variable prüfst du dann im Hauptformular.

Sollte so klappen. Vielleicht gibst es auch was geschickteres.

Gruß
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#3

Re: Abfrage ob Formular created

  Alt 24. Nov 2003, 09:56
Hallo Praktikant,

wenn Du die Formulare dynamisch zur Laufzeit erstellst, solltest Du doch in Form von Variablen Referenzen auf diese Fenster haben, also in etwa Self.FMyChild:= TChildForm.Create(Self); In diesem Fall sollte ein Result:= Assigned(Self.FMyChild); im Hauptformular Aufschluss darüber geben, ob dieses Formular bereits erzeugt worden ist.
Die Lösung setzt vorraus, dass Du für jedes Fenster eine Variable verwendest (siehe auch TObjectList) und das Fenster nicht wieder Freigegeben wird, ohne dass das Hauptfenster darüber informiert und die Variable wieder auf nil gesetzt wird. Falls Dir diese "Benachrichtigung" zu umständilich erscheint, könntest Du das Fenster vielleicht einfach verstecken und diesen Umstand beim Testen auf das Fenster bzw beim Erzeugen berücksichtigen...
gruß, choose
  Mit Zitat antworten Zitat
Benutzerbild von Marcel Gascoyne
Marcel Gascoyne

Registriert seit: 18. Nov 2003
Ort: Uetersen
271 Beiträge
 
Delphi 2005 Architect
 
#4

Re: Abfrage ob Formular created

  Alt 24. Nov 2003, 10:39
Wenn Du auf die Kindfenster innerhalb einer MDI Anwendung zugreifen willst solltest Du die Eigenschaften MDIChildCount und MDIChildren des Hauptformulars verwenden. Verwende einen Timer in Deinem MDI Hauptformular und benutze folgenden Code im OnTimer Event:

Delphi-Quellcode:
procedure TYourMDIForm.Timer1Timer(Sender: TObject);
var
  Idx: Integer;
begin
  for Idx := 0 to Self.MDIChildCount - 1 do
  begin
    { Suche nach MDI Kindfenster }
    if Self.MDIChildren[Idx].Name = 'MyFormNamethen
    begin
      { Form gefunden, also Timer1 deaktivieren }
      Timer1.Enabled := False;
      { hier Deinen Code rein }
      
    end;
  end;
end;
Hoffe, das Dir diese Info weiterhilft.

Gruß,
Marcel
Marcel Gascoyne
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Abfrage ob Formular created

  Alt 24. Nov 2003, 10:42
@Marcel Gascoyne , hältst du das für geschickt im Timer das vorhandensein eines Formulars zu prüfen?
Reicht es nicht einmal ne Prüfung ducrhzuführen statt in Intervallen?

Ich persönlich würde sowas nie in den Timer stecken. Dann sogar lieber ne Schleife.

Gruß
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Praktikant

Registriert seit: 24. Sep 2003
131 Beiträge
 
Delphi 5 Enterprise
 
#6

Re: Abfrage ob Formular created

  Alt 24. Nov 2003, 11:14
danke für die Tipps, teste mal aus wie ich es zum laufen bekomme.
Ansonten die einfachste Methode verwenden, eine Variable setzen...
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Abfrage ob Formular created

  Alt 24. Nov 2003, 11:42
Hi Praktikant,

die Lösung mit der Variablen ist die komplizierte Methode.

nimmst du sie public in deine Form, bekommst du beim Zugriff eine Exception wenn die Form nicht existiert. Führst du sie global, mußt du dich konsequent um die pflege kümmern (Zuordnung zum passenden Fenster, variable Anzahl etc.).

Assign ist der einfache Weg. Prüfe mit Assign das Vorhandensein der Instanz und verzweige auf nichts tun bei False.

Gruß oki
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Abfrage ob Formular created

  Alt 24. Nov 2003, 12:38
Ich kann wieder mal meinen eigenen Beitrag nicht editieren

Schreibfehler: nicht Assign sondern Assigned verwenden!

Gruß oki
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Abfrage ob Formular created

  Alt 24. Nov 2003, 13:29
jep oki´s variante ist besser, mach es lieber so mit assigned
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Benutzerbild von Marcel Gascoyne
Marcel Gascoyne

Registriert seit: 18. Nov 2003
Ort: Uetersen
271 Beiträge
 
Delphi 2005 Architect
 
#10

Re: Abfrage ob Formular created

  Alt 24. Nov 2003, 14:02
Zitat von Tyrael Y.:
@Marcel Gascoyne , hältst du das für geschickt im Timer das vorhandensein eines Formulars zu prüfen?
@Tyrael: Wollt ich den Timer benutzen oder Praktikant ?

Ich würd die Prüfung sonst natürlich in einen Loop nach der Erstellung der Child Formulare oder ins Show Event der MDI Form legen... Nur wann erstellt er die Formulare ? Im Create Event ?

Gruß,
Marcel
Marcel Gascoyne
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:53 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