AGB  ·  Datenschutz  ·  Impressum  







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

Programm beenden

Ein Thema von Nico80 · begonnen am 14. Sep 2007 · letzter Beitrag vom 15. Sep 2007
Antwort Antwort
Nico80

Registriert seit: 28. Jun 2007
63 Beiträge
 
Delphi 2006 Enterprise
 
#1

Programm beenden

  Alt 14. Sep 2007, 11:40
Hallo an alle,

ich habe ein kleines Problem, was sicherlich leicht zu lösen ist.

Ich habe im OnCloseQuery-Ereignisbehandlungsroutine eine Abfrage eingebaut, die den Anwender fragt,
ob er die Anwendung wirklich schließen möchte.
So weit so gut.
Nun ist es so, dass das Beenden von Windows auf diese Weise behindert wird, da sich das Programm unter Umständen nicht von alleine schließt.
Wie kann man die Abfrage nur beim manuellen Schließen anzeigen.

Danke für Tips
  Mit Zitat antworten Zitat
Benutzerbild von ralfschwalbe
ralfschwalbe

Registriert seit: 19. Jul 2007
Ort: Lichtenstein/Sachsen
133 Beiträge
 
Delphi XE3 Professional
 
#2

Re: Programm beenden

  Alt 14. Sep 2007, 11:46
Hallo,

sieh mal in der Hilfe unter WM_QUERYENDSESSION nach...

Wenn Du diese Message selbst behandelst, kannst Du auf das Beenden von Windows in gewünschter Weise reagieren.

Ralf
Ralf Schwalbe
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#3

Re: Programm beenden

  Alt 15. Sep 2007, 15:02
oder du machst 'n kleinen timer, wo du nach 'n paar sekunden, automatisch das close aufrufst.. z.b. nach 3 oder 5 sekunden...
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#4

Re: Programm beenden

  Alt 15. Sep 2007, 15:08
Zitat von grenzgaenger:
oder du machst 'n kleinen timer, wo du nach 'n paar sekunden, automatisch das close aufrufst.. z.b. nach 3 oder 5 sekunden...
Was soll so ein Gefrickel, wenn die Lösung schon genannt worden ist?

In die Private-Deklaration folgendes
procedure WMQueryEndSession(var Message: TWMQueryEndSession); message WM_QUERYENDSESSION; und ausgeführt sieht das dann so aus:
Delphi-Quellcode:
procedure TFRMmain.WMQueryEndSession(var Message: TWMQueryEndSession);
begin
   Inherited;
   Message.Result := 1;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Programm beenden

  Alt 15. Sep 2007, 15:46
Hallo,

ich mach das immer so:

Delphi-Quellcode:
private
  Windows_Session_End: Boolean;
Delphi-Quellcode:
procedure TMainForm.WMQueryEndSession (var Msg : TWMQueryEndSession);
begin
  //Windows erlauben zu beenden
  Msg.Result := 1;

  //Wenn Windows beendet wird, dann Variable auf true setzen
  Windows_Session_End := true;

  //Programm schliessen
  close;

  inherited;
end;
und im OnCloseQuery der form:
Delphi-Quellcode:
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  If Windows_Session_End or
    (MessageDlg(Msg10, mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
    begin
      //Beenden erlauben
      CanClose := true;

    {...}
  else
    //Beenden nicht erlauben
    CanClose := false;
end;
Damit wird gleich beendet, ohne dass die Meldung ob man wirklich beenden will kommt.
(Bei mir werden somit gleich mal alle Sachen gespeichert)
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  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 10:08 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