Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Buttonabhängiges Schließen des Programms (https://www.delphipraxis.net/155352-buttonabhaengiges-schliessen-des-programms.html)

hans ditter 20. Okt 2010 01:25

Buttonabhängiges Schließen des Programms
 
Hi DPler,
ich habe mich jetzt schon zum zweiten Mal gefragt, wie man das schließen einer Anwendung abhängig davon machen kann, welcher Button gedrückt wird.
Konkret geht es darum, dass ich gerade ein Chat schreibe. Nun wollte ich am Anfang ein Anmeldefenster einfügen. Wenn man das Programm startet, dann sieht man im Hintergrund das eigentliche Chatfenster (ist nicht enabled). Davor ist eine kleiner Fenster zu sehen, in welchem man Benutzername und Passwort eingibt, dann auf Anmelden klickt.
Beim Klick auf den Button Anmelden soll nur dieses Fenster geschlossen werden. Wenn man aber auf das rote Kreuz oben in der Ecke des Fenster klickt, soll das Programm beendet werden.

Hoffe ihr könnt nachvollziehen, wo mein Problem liegt. Ich habe mir auch schonmal OnCloseQuery angeschaut, aber das passt auch nicht auf mein Problem. Denn das Anmeldefenster soll ja in jedem Fall geschlossen werden, nur die Behandlung des Hauptfensters soll ja abhängig von dem gedrückten Button sein.

LG, hans ditter

Medium 20. Okt 2010 02:09

AW: Buttonabhängiges Schließen des Programms
 
Guck dir mal TForm.ShowModal und TForm.ModalResult an, bzw. auch TButton.ModalResult. (Tipp: Schließen über das rote X dürfte "mrNone" liefern.)

hans ditter 20. Okt 2010 02:58

AW: Buttonabhängiges Schließen des Programms
 
Hey, danke für die Antwort. Werds mir morgen mal anschauen... bin jetzt echt müde... :|:vernupft::corky::drunken: :pale: :freak:

(Ok, ich geb zu, hab's grad ein biiischen übertrieben mit den Smileys.... :D und schon wieder einer, ein Teufelkreis ... :lol: :firejump:)

youuu 20. Okt 2010 07:08

AW: Buttonabhängiges Schließen des Programms
 
Zitat:

Zitat von Medium (Beitrag 1056612)
Guck dir mal TForm.ShowModal und TForm.ModalResult an, bzw. auch TButton.ModalResult. (Tipp: Schließen über das rote X dürfte "mrNone" liefern.)

Plediere ebenfalls für Showmodal.

Siehe Quelltext für Anwendung:

Delphi-Quellcode:
begin
  Application.Initialize;
  Application.MainFormOnTaskBar:= true;

  frm_Login:= Tfrm_Login.Create(nil);
  try
    if frm_Login.ShowModal = mrOk then
      Application.CreateForm(Tfrm_Start, frm_Start);
  finally
    frm_Login.Free;
  end;
  Application.Run;
end.
So wird erst dein Chatfenster erstellt, wenn dein Login ein mrOk liefert, falls es das nicht tut und wird beendet, schließt sich die komplette Anwendung.

hans ditter 20. Okt 2010 13:03

AW: Buttonabhängiges Schließen des Programms
 
hm, werds gleich nochmal googlen, aber könntest du an meinem Quelltext nochmal die Änderungen, die ich vornehmen muss mit Kommentaren posten?
Hier mein Quelltext:
Delphi-Quellcode:
program Client;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form4},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.Run;
end.

DeddyH 20. Okt 2010 13:56

AW: Buttonabhängiges Schließen des Programms
 
Welches ist denn das LoginForm?

hans ditter 20. Okt 2010 15:30

AW: Buttonabhängiges Schließen des Programms
 
Form1 --> Hauptform
Form2 --> Loginform
Beide Forms werden (eigentlich) bei Programmstart erstellt.

Ich hatte mir zu Hause auch Gedanken gemacht. Das ist rausgekommen:
Delphi-Quellcode:
program Client;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form4},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

begin
  Application.Initialize;
  //Application.MainFormOnTaskBar:=True; --> failure: Application kennt diesen Bezeichner nicht
  Form2:=TForm2.Create(nil);
  try
    if Form2.ShowModal = mrOk then
      Application.CreateForm(TForm1,Form1);
  finally
      Form1.Free;
  end;
  Application.Run;
end.
Der restliche Quelltext funzt auch nicht. Da wird das Loginfenster halbwegs erzeugt, dann kommt aber eine Fehlermeldung, dass aus einem sichtbaren Fenster kein modales gemacht werden kann.

DeddyH 20. Okt 2010 15:38

AW: Buttonabhängiges Schließen des Programms
 
Ungetestet:
Delphi-Quellcode:
program Client;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form4},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

begin
  Application.Initialize;
  Form2:=TForm2.Create(nil);
  try
    Form2.Visible := false;
    if Form2.ShowModal = mrOk then
      Application.CreateForm(TForm1,Form1);
  finally
      Form2.Free; //Form2, nicht Form1
  end;
  Application.Run;
end.

hans ditter 20. Okt 2010 15:49

AW: Buttonabhängiges Schließen des Programms
 
tja, das funktioniert schonmal fast super.
Ich hatte versehentlich eingegeben
Delphi-Quellcode:
if Form2.ShowModal <> 0 then
... und was soll ich sagen, dass funktioniert. Wenn ich da angebe
Delphi-Quellcode:
if Form2.ShowModal = mrOk then
erzählt er mir, dass 'mrOk' ein 'undefinierter Bezeichner' ist.

Und dann hab ich noch eine Verständnisfrage. Du erzeugst Form2. Machst es dann aber unsichtbar, man kann es aber trotzdem sehen? Ist mir im Moment noch ein Rätsel... :glaskugel:

DeddyH 20. Okt 2010 16:25

AW: Buttonabhängiges Schließen des Programms
 
Ein kurzer Blick in die Referenz:
Zitat:

Zitat von Delphi-Referenz
constant Controls.mrOk

Aha, Controls fehlt in der uses-Klausel ;) Und Formulare sind per Default erst einmal nicht visible, das hast Du anscheinend im OI geändert. Also setze ich das wieder zurück, um die Fehlermeldung abzustellen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:53 Uhr.
Seite 1 von 4  1 23     Letzte »    

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