<br>Hi,...
<br>
<br>Nach längerer Recherech in Foren und Büchern habe ich kein Konzept gefunden mit dem man
<br>zuverlässig Fenster öffnen/schließen kann ohne Schutzverletzungen zu bekommen
<br>(vieleicht mache ich aber auch was falsch).
<br>Nun Ja,...
<br>Ich habe ein MidiMainForm mit einer Menüleiste, einem Menü und einem Menüpunkt.
<br>Drückt man auf den Menüpunkt, so wird FormA (MidiChild) aufgerufen mit:
<br>
<br>if FormA = nil Then FormA := TFormA.Create(Application)
<br>else FormA.Show; //diesen Code habe ich aus irgend einem Delphi Buch
<br>
<br>Das funktioniert zunächst auch, es wird nun FormA aufgerufen.
<br>In FormA existiert nun ein Button der beim Click folgenden Code ausführt:
<br>
<br>if FormB = nil Then FormB := TFormB.Create(Application)
<br>else FormB.Show; //diesen Code habe ich aus irgend einem Delphi Buch
<br>
<br>Das funktioniert zunächst auch, es wird nun FormB aufgerufen.
<br>Nun möchte ich, daß wenn man auf X (fenster schließen) von FormA drückt, dann
<br>soll auch FormB geschlossen werden. Drückt man jedoch X auf FormB, so soll nur FormB
<br>geschlossen werden.
<br>
<br>Dazu habe ich in FormA den folgenden Code unter ONClose stehen:
<br>
<br>action := ACFree;
<br>If FormB <> NIL Then Begin
<br> FormB.Release(0);
<br> FormB := NIL;
<br>End;
<br>//Hier muß meiner Meinung nach noch FormA := Nil hin aber wie???
<br>
<br>Und in FormB unter OnClose:
<br>action := ACFree;
<br>//Hier muß meiner Meinung nach noch FormB := Nil hin aber wie???
<br>
<br>
<br>Durch mehrer Versuch war ich dann mal so weit, das dies alles einmal funktionierte,
<br>jedoch als ich FormA wieder aus dem Menü heraus aufrief kam eine Fehlermeldung.
<br>Diese, so vermute ich erscheint, weil der Zeiger von FormA nicht nil ist. Aber
<br>wie kann ich das machen wenn das Fenster über X geschlossen wird???
<br>
<br>Am liebsten wäre mir eine Prozedur wie Folgt:
<br>Procedure showorcreate( myform : TForm);
<br>Begin
<br>if myform = nil Then myform := Tmyform.Create(Application)
<br>else myform.Show; //diesen Code habe ich aus irgend einem Delphi Buch
<br>End;
<br>Ich vermute mal die Proc funktioniert jedoch habe ich beim schließen
<br>immer noch das Problem mit dem NIL setzen.
<br>Und was bedeutet eigentlich myform := Tmyform.Create(Application) in manchen Codes
<br>stand anstatt Application Self wo ist der Unterschied und was sollte man verwenden??????
<br>
<br>Und zu guter letzt wie kann man mehrere völlig selbständige Instanzen eines Fensters
<br>mit Sub Fenstern (wie oben beschrieben) öffnen ???
<br>D.H. man öffnet FormA 2 mal und öffnet aus jedem FormA heraus das zugehörige FormB
<br>und die FormB's greifen nur auf das FormA zurück, das sie geöffnet
<br>hat (und FormA und FormB sollen MidiChilds sein)???
<br>
<br>Vielen Dank für Antworten.
<br>
<br>MfG
<br>PS
<br>
<br>Nach längerer Recherech in Foren und Büchern habe ich kein Konzept gefunden mit dem man
<br>zuverlässig Fenster öffnen/schließen kann ohne Schutzverletzungen zu bekommen
<br>(vieleicht mache ich aber auch was falsch).
<br>Nun Ja,...
<br>Ich habe ein MidiMainForm mit einer Menüleiste, einem Menü und einem Menüpunkt.
<br>Drückt man auf den Menüpunkt, so wird FormA (MidiChild) aufgerufen mit:
<br>
<br>if FormA = nil Then FormA := TFormA.Create(Application)
<br>else FormA.Show; //diesen Code habe ich aus irgend einem Delphi Buch
<br>
<br>Das funktioniert zunächst auch, es wird nun FormA aufgerufen.
<br>In FormA existiert nun ein Button der beim Click folgenden Code ausführt:
<br>
<br>if FormB = nil Then FormB := TFormB.Create(Application)
<br>else FormB.Show; //diesen Code habe ich aus irgend einem Delphi Buch
<br>
<br>Das funktioniert zunächst auch, es wird nun FormB aufgerufen.
<br>Nun möchte ich, daß wenn man auf X (fenster schließen) von FormA drückt, dann
<br>soll auch FormB geschlossen werden. Drückt man jedoch X auf FormB, so soll nur FormB
<br>geschlossen werden.
<br>
<br>Dazu habe ich in FormA den folgenden Code unter ONClose stehen:
<br>
<br>action := ACFree;
<br>If FormB <> NIL Then Begin
<br> FormB.Release(0);
<br> FormB := NIL;
<br>End;
<br>//Hier muß meiner Meinung nach noch FormA := Nil hin aber wie???
<br>
<br>Und in FormB unter OnClose:
<br>action := ACFree;
<br>//Hier muß meiner Meinung nach noch FormB := Nil hin aber wie???
<br>
<br>
<br>Durch mehrer Versuch war ich dann mal so weit, das dies alles einmal funktionierte,
<br>jedoch als ich FormA wieder aus dem Menü heraus aufrief kam eine Fehlermeldung.
<br>Diese, so vermute ich erscheint, weil der Zeiger von FormA nicht nil ist. Aber
<br>wie kann ich das machen wenn das Fenster über X geschlossen wird???
<br>
<br>Am liebsten wäre mir eine Prozedur wie Folgt:
<br>Procedure showorcreate( myform : TForm);
<br>Begin
<br>if myform = nil Then myform := Tmyform.Create(Application)
<br>else myform.Show; //diesen Code habe ich aus irgend einem Delphi Buch
<br>End;
<br>Ich vermute mal die Proc funktioniert jedoch habe ich beim schließen
<br>immer noch das Problem mit dem NIL setzen.
<br>Und was bedeutet eigentlich myform := Tmyform.Create(Application) in manchen Codes
<br>stand anstatt Application Self wo ist der Unterschied und was sollte man verwenden??????
<br>
<br>Und zu guter letzt wie kann man mehrere völlig selbständige Instanzen eines Fensters
<br>mit Sub Fenstern (wie oben beschrieben) öffnen ???
<br>D.H. man öffnet FormA 2 mal und öffnet aus jedem FormA heraus das zugehörige FormB
<br>und die FormB's greifen nur auf das FormA zurück, das sie geöffnet
<br>hat (und FormA und FormB sollen MidiChilds sein)???
<br>
<br>Vielen Dank für Antworten.
<br>
<br>MfG
<br>PS
Comment