AGB  ·  Datenschutz  ·  Impressum  







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

Form lässt sich nicht schließen

Ein Thema von RedShakal · begonnen am 14. Jul 2009 · letzter Beitrag vom 15. Jul 2009
Antwort Antwort
RedShakal
(Gast)

n/a Beiträge
 
#1

Form lässt sich nicht schließen

  Alt 14. Jul 2009, 21:55
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.
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Form lässt sich nicht schließen

  Alt 14. Jul 2009, 22:05
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.
  Mit Zitat antworten Zitat
RedShakal
(Gast)

n/a Beiträge
 
#3

Re: Form lässt sich nicht schließen

  Alt 14. Jul 2009, 22:06
habe ich leider schon erfolgslos versucht
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Form lässt sich nicht schließen

  Alt 14. Jul 2009, 22:10
Schon mit .ShowModal() versucht?
Markus Kinzler
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Form lässt sich nicht schließen

  Alt 14. Jul 2009, 22:13
Zitat:
Wenn ich das X bei Form1 drücke geht die Anwendung ohne Probleme zu
...aber Form1.Close funktioniert nicht?

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)
  Mit Zitat antworten Zitat
RedShakal
(Gast)

n/a Beiträge
 
#6

Re: Form lässt sich nicht schließen

  Alt 14. Jul 2009, 22:36
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?
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Form lässt sich nicht schließen

  Alt 15. Jul 2009, 10:08
Zitat von RedShakal:
Als ich Forms mit Form2.Create(self); erstellen wollte, bekam ich nur einen Error das Label1 schon existieren würde.
Passiert, wenn Du z.B. für ein automatisch erzeugtes Formular nochmal Create aufrufst (wenn dann hättest Du TForm2.Create aufrufen müssen, aber nicht wenn es sowieso schon automatisch erzeugt wurde)

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.
  Mit Zitat antworten Zitat
RedShakal
(Gast)

n/a Beiträge
 
#8

Re: Form lässt sich nicht schließen

  Alt 15. Jul 2009, 17:14
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 = 'Erstelltthen
        begin
          Showmessage('Account wurde erfolgreich erstellt!');
          Form2.Close;
          Form1.Show;
          Form1.Client.Disconnect;
          Button1.Enabled := false;
        end;

      if Buffer = 'Vorhandenthen 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;
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Form lässt sich nicht schließen

  Alt 15. Jul 2009, 21:22
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.
  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 17:10 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