![]() |
Form lässt sich nicht schließen
Moin zusammen.
Ich habe ein Programm welches 3 Forms benutzt. Login Screen => 2 Buttons -> Login -> Register <- Reg => Form1.Hide -> Form2.Show ... nach Registration umgekehrt. Login => Form1.Hide -> Form3.Show ... blablabla... Wenn ich das X bei Form1 drücke geht die Anwendung ohne Probleme zu. Wenn ich jedoch das X auf Form2 oder Form3 drücke, verschwindet zwar das Form, aber die Anwendung bleibt im Taskmanager offen. Habe schon alles Probiert was mir einfällt: FormClose Application.Terminate Exit; FormDestroy Close; Nichts hat geholfen. Wenn ich einen Button erstelle wo Application.Terminate drinsteht, sagt er mir das er nicht verbunden währe ( Obwohl ausserhalb der IRC Verbindung nichts offen ist. Als ich den Disconnect befehl rausgenommen hatte zeigte er mir die Meldung dennoch an.) Was kann man da machen? Als ich Forms mit Form2.Create(self); erstellen wollte, bekam ich nur einen Error das Label1 schon existieren würde. |
Re: Form lässt sich nicht schließen
Form1 ist das MainForm und muss zum schließen der Anwendung geschlossen werden. Also Form2.Close oder Form3.Close schließt nicht die Anwendung sondern nur das Fenster. Da Form1 versteckt ist, bleibt nur das ManagementFenster in der Tastleiste übrig.
Anwendung via Form1.Close schließen. |
Re: Form lässt sich nicht schließen
habe ich leider schon erfolgslos versucht :cry:
|
Re: Form lässt sich nicht schließen
Schon mit .ShowModal() versucht?
|
Re: Form lässt sich nicht schließen
Zitat:
Schließt Form1 nur, solange Form2/3 nicht offen sind/waren? Wenn ja, wie erzeugst Du Form2/3? (geht wohl in die gleiche Richtung wie mkinzler vermutet, ich glaube du zeigst/erzeugst Form2/3 falsch) |
Re: Form lässt sich nicht schließen
Also Form1 klappt so nicht. Auch wenn ich alle Forms versuche zu schließen dann bekomme ich einen Fehler wieder das irgentwelche Verbindungen nicht bestehen würden.
Wie kann man denn Falsch das Form zeigen gibt es noch andere Methoden? |
Re: Form lässt sich nicht schließen
Zitat:
Anzeigen kann man ein Formular auf viele Arten, landet im Prinzip aber bei den Varianten .Show und .ShowModal Deinen Fehler kann ich nicht reproduzieren, müsstest also etwas Code posten, wie die Formulare angelegt und angezeigt werden bzw. wie Du versuchst die Anwendung zu schließen. |
Re: Form lässt sich nicht schließen
Der Code meiner registration.pas schaut momentan so aus:
Delphi-Quellcode:
unit registration;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls; type TForm2 = class(TForm) Label1: TLabel; Benutzername: TEdit; Label2: TLabel; Passwort: TEdit; Passwort2: TEdit; Label3: TLabel; Label4: TLabel; Email: TEdit; Button1: TButton; Button2: TButton; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm2; implementation uses login, main; {$R *.dfm} procedure TForm2.Button2Click(Sender: TObject); begin Form1.Visible := true; Form2.Close; Form1.Client.Disconnect; end; procedure TForm2.Button1Click(Sender: TObject); var Buffer : string; Reg : byte; begin If Passwort.Text <> Passwort2.Text then Showmessage('Die Passwörter sind nicht identisch!'); If Passwort.Text = '' then Showmessage('Bitte wähle ein Passwort!'); If Benutzername.Text = '' then Showmessage('Der Benutzername darf nicht leer sein!'); If Email.Text = '' then Showmessage('Bitte gib eine E-Mail Adresse ein!'); if Passwort.Text = Passwort2.Text then begin if Benutzername.Text <> '' then begin if Email.Text <> '' then begin Reg := 1; end; end; begin if Reg = 1 then begin Form1.Client.Connect(5000); Form1.Client.WriteLn('Register' + '|' + Form2.Benutzername.Text + '|' + Form2.Passwort.Text + '|' + Form2.EMail.Text); Buffer := Form1.Client.ReadLn; if Buffer = 'Erstellt' then begin Showmessage('Account wurde erfolgreich erstellt!'); Form2.Close; Form1.Show; Form1.Client.Disconnect; Button1.Enabled := false; end; if Buffer = 'Vorhanden' then Showmessage('Account existiert bereits!'); end; end; end; end; end. Ich benutze Form Hide und Form Show um die Forms zu zeigen oder zu verstecken. Um Form1 zu verstecken nutze ich Form1.Hide. Um andere Forms zu schließen, nutze ich Form2.Close; |
Re: Form lässt sich nicht schließen
OK, da sind eine Menge Schönheitsfehler, aber nichts was zwingend verhindert, dass Form1 geschlossen wird. Soll jetzt hier auch nicht Thema sein...
Evtl. liegt es an diesem Clienten (IRC-Client Komponente?), der noch einen Thread aktiv hat und das Schließen behindert? Es liegt also eher an Form1 bzw. einer Komponente darauf, dass Form1 nicht geschlossen werden kann. Application.Terminate ist sehr mächtig, um von beliebiger Stelle aus die Anwendung zu beenden. Wenn er damit die Fehlermeldung bringt "Verbindung ...bla", würde ich das als Ursache sehen und gezielt danach suchen. Meine erste Vermutung, das ein nicht "schließbares" Fenster das verhindert, war wohl falsch. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01: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-2025 by Thomas Breitkreuz