Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   mehrer Formulare schließen (https://www.delphipraxis.net/103923-mehrer-formulare-schliessen.html)

Tarry 24. Nov 2007 12:23


mehrer Formulare schließen
 
Hi,
ich hatte vor ein par Tagen einen Passwortgenerator geschrieben, welcher auch gut funktioniert, allerdings möchte ich jetzt einen Passwortmanager "drumherum schreiben"...
Mein (erstes) Problem ist allerdings, dass ich noch nie mit zwei oder mehr Formularen gearbeitet habe, was ich jetzt machen möchte, hab auch alles soweit geschafft, allerdings scheitere ich daran, dass wenn ich Formular A schließe auch gleichzeitig Formular B geschlossen werden soll (bekomme immer einen Stack Überlauf). Aber wenn der Benutzer auf das "x" bei Formular B klickt soll dieses nur Invisible werden und Formular A erscheinen.

Ich postet mal meinen bisherigen Quellcode:

Formular A heißt bei mir 'Hauptfenster'
Formular B 'Generator'

Quellcode von Hauptfenster:
Delphi-Quellcode:
procedure THauptfenster.Button1Click(Sender: TObject);
begin
Hauptfenster.Visible := False;
Application.CreateForm(TGenerator, Generator);
Generator.Visible := True;
end;

procedure THauptfenster.FormActivate(Sender: TObject);
begin
// Generator.Visible := False;
end;

procedure THauptfenster.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
Generator.Caption := 'Schließen';
Generator.Visible := True;
Generator.Destroy;
// Generator.Close;
// Hauptfenster.Close;
end;
Quellcode von Generator:
Delphi-Quellcode:
procedure TGenerator.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
if Generator.Caption = 'Passwortgenerator'
then begin
       CanClose := False;
       Generator.Visible := False;
       Hauptfenster.Visible := True;
     end
else CanClose := True;
end;
Danke schonmal im Voraus, ich hoffe eu ist mein Problem klargeworden^^

BullsEye 24. Nov 2007 12:43

Re: mehrer Formulare schließen
 
Zitat:

Zitat von Tarry
Aber wenn der Benutzer auf das "x" bei Formular B klickt soll dieses nur Invisible werden und Formular A erscheinen.

Mach das einfach so:
Delphi-Quellcode:
...
Form1.Show;
Form2.Hide;
Zitat:

Zitat von Tarry
allerdings scheitere ich daran, dass wenn ich Formular A schließe auch gleichzeitig Formular B geschlossen werden soll (bekomme immer einen Stack Überlauf).

Delphi-Quellcode:
..
Form1.Close;
Form2.Close;
Das ist ganz simpel und ich find das besser als wenn du das mit diesem "visible := true" etc machst ;)
Ich hoffe das hilft dir

Progman 24. Nov 2007 12:48

Re: mehrer Formulare schließen
 
Und niemals Destroy direkt aufrufen, da nimmt man Free ;)

dominikkv 24. Nov 2007 12:49

Re: mehrer Formulare schließen
 
Zitat:

Zitat von Progman
Und niemals Destroy direkt aufrufen, da nimmt man Free ;)

oder FreeAndNil(Instanz);

Tarry 24. Nov 2007 12:54

Re: mehrer Formulare schließen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von BullsEye
Mach das einfach so:

Delphi-Quellcode:
..
Form1.Close;
Form2.Close;
Das ist ganz simpel und ich find das besser als wenn du das mit diesem "visible := true" etc machst ;)
Ich hoffe das hilft dir

Hab ich ja als erstes versucht, aber auch dann hab ich einen Stack Überlauf bekommen, ich hänge mein Projekt einfach mal an, vielleicht liegt der Fehler auch bei ner ganz anderen Stelle.

Progman 24. Nov 2007 13:16

Re: mehrer Formulare schließen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habs mal umgearbeitet. Du musst schlichtweg das Hauptformular auch als Hauptformular in den Projekt-Optionen einstellen. Das andere kannst du dem Code entnehmen.
Übrigens, woher der Stacküberlauf kam, hab ich auf die Schnelle auch nicht rausgefunden ;)

Tarry 24. Nov 2007 13:24

Re: mehrer Formulare schließen
 
Zitat:

Zitat von Progman
Ich habs mal umgearbeitet. Du musst schlichtweg das Hauptformular auch als Hauptformular in den Projekt-Optionen einstellen. Das andere kannst du dem Code entnehmen.
Übrigens, woher der Stacküberlauf kam, hab ich auf die Schnelle auch nicht rausgefunden ;)

D A N K E !
Da hab ich's mir ja mal echt zu kompliziert gemacht :wall:
Danke. :hello:

DP-Maintenance 24. Nov 2007 14:48

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi-Frage


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:03 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 by Thomas Breitkreuz