AGB  ·  Datenschutz  ·  Impressum  







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

Form1.Deactivate abfangen

Ein Thema von Go2EITS · begonnen am 11. Sep 2006 · letzter Beitrag vom 5. Okt 2006
Antwort Antwort
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#1

Form1.Deactivate abfangen

  Alt 11. Sep 2006, 10:47
Hallo DP,

mal wieder eine Frage:

Ich habe eine Form und eine Aktion, die länger dauert. Der User will die Form aber während der Aktion schließen. Da gibst es eine Exception, weil in der nun nicht vorhandenen Form Ausgaben/Anzeigen in Panels ausgeführt werden. Ich habe nachgesehen, welche Eigenschaft beim klicken vom X in der Form ausgeführt wird:
Delphi-Quellcode:
 procedure TForm5.FormDeactivate(Sender: TObject);
begin
showmessage('deact');
end;
Ich denke, ich muss den Aufruf abfangen, weil meine Form schon deactiviert ist, wenn ich showmessage anzeigen lasse. Ist klar, dass ich eine boolsche Variable habe, die mir sagt, ob die Aktion noch läuft, oder die Form geschlossen werden darf.

Hoffentlich muss ich nicht erst das Object ableiten und neue Methoden einbauen (Graus!!!!)
Hat da jemand einen Vorschlag?

Beste Grüße
Go2EITS
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#2

Re: Form1.Deactivate abfangen

  Alt 11. Sep 2006, 10:52
Hi,

schau Dir mal Delphi-Referenz durchsuchenTForm.OnCloseQuery an. OnDeactivate wird auch aufgerufen, wenn man irgendwo außerhalb des Fensters klickt... OnCloseQuery erst wenn das Fenster wirklich geschlossen werden soll...

Gruß
Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#3

Re: Form1.Deactivate abfangen

  Alt 11. Sep 2006, 10:59
Danke Steve, ONCLOSE zeigt mir die Form und die Message [nachtrag] bevor dann das Fenster geschlossen wird. Und das will ich verhindern. [\nachtrag] Wie nun weiter?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Form1.Deactivate abfangen

  Alt 11. Sep 2006, 11:00
Was macht wohl der Parameter CanClose?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#5

Re: Form1.Deactivate abfangen

  Alt 11. Sep 2006, 11:05
Danke Steve, danke Lukie!
Das ist es!

Hier die Lösung mit F1:
Delphi-Quellcode:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if MessageDlg('Close the form?', mtConfirmation,
    [mbOk, mbCancel], 0) = mrCancel then
     CanClose := False;
end;
Merci! Go2EITS
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#6

Re: Form1.Deactivate abfangen

  Alt 5. Okt 2006, 09:01
Kleiner Schönheitsfehler in der vorstehenden Lösung: Damit das Programm beim nächsten Schließen beendet werden kann, denn wenn CanClose:=False ist, kommt man aus dem Programm nicht mehr so einfach raus, muss irgendwo ein CanClose:=True rein. z. B. so:

Delphi-Quellcode:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if MessageDlg('Close the form?', mtConfirmation,
    [mbOk, mbCancel], 0) = mrCancel then
     CanClose := False else
     CanClose := True;
end;
F1 hat nicht immer offensichtlich die beste Lösung. Alles klar?
Beste Grüße
Go2EITS
  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 16:54 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