AGB  ·  Datenschutz  ·  Impressum  







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

Reihenfolge des Aufrufes von OnCloseQuery

Ein Thema von Codehunter · begonnen am 28. Jan 2014 · letzter Beitrag vom 28. Jan 2014
Antwort Antwort
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Reihenfolge des Aufrufes von OnCloseQuery

  Alt 28. Jan 2014, 13:50
Hallo!

Ich habe eine VCL-Anwendung, welche neben dem Hauptformular noch mehrere Childforms offen haben kann. Jedes Childform behandelt sein eigenes OnCloseQuery selbst. Auch das Mainform behandelt sein OnCloseQuery. Bisher ist es so, dass zuerst die OnCloseQuery-Handler der Childforms aufgerufen werden, wenn der User auf Schließen im Mainform klickt und erst als letztes das OnCloseQuery des Hauptformulars. Ich bräuchte es aber genau umgekehrt oder genauer gesagt ein zusätzliches Event im Mainform, welches vorrangig behandelt wird.

Gibt es eine Windows-Message die ich abfangen könnte bevor die Ereigniskette an die Childforms weiter geht? Wichtig wäre nur, dass ich die weitere Behandlung des Ereignisses bzw. der Message unterbrechen kann.

Sinn der Sache ist folgender: In jedem der Childforms gibt es Möglichkeiten, dass der User Einstellungen ändert etc. die evtl. noch nicht gespeichert sind. Es gibt eine zentrale Verwaltung ungespeicherter Objekte. Wird explizit nur ein Childform geschlossen, dann erscheint über OnCloseQuery eine Nachfrage zum Speichern genau der Objekte, die sich auf dieses Childform beziehen. Wird das Mainform geschlossen, erscheinen demzufolge mehrere Speichern-Abfragen nacheinander, was für den User lästig ist.

Entsprechend möchte ich beim Schließen des Mainforms eine zusammengefasste Liste aller zu speichernden Objekte anzeigen, die der User gebündelt bestätigen kann.

Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Reihenfolge des Aufrufes von OnCloseQuery

  Alt 28. Jan 2014, 13:57
Du hast doch den VCL-Quellcode, warum dann nicht selber nachsehen?

OnCloseQuery kennst du und kannst danach suchen.
Es findet sich das CloseQuery.
Nun könnte man nach dem CloseQuery suchen und schauen wo es aufgerufen wird.
Das ist eine Menge und nicht Alle kommen direkt über eine Windowsmessage, welche man eventuell alle abfangen müsste.

Also bleibt nur CloseQuery.
Delphi-Quellcode:
    function CloseQuery: Boolean; virtual;

function TCustomForm.CloseQuery: Boolean;
var
  I: Integer;
begin
  if FormStyle = fsMDIForm then
  begin
    Result := False;
    for I := 0 to MDIChildCount - 1 do
      if not MDIChildren[I].CloseQuery then Exit;
  end;
  Result := True;
  if Assigned(FOnCloseQuery) then FOnCloseQuery(Self, Result);
end;
Tja, das ist virtual, also lässt es sich überschreiben
und wenn du noch vor die Childs willst, dann kommt dein Code halt vor das inherited.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Reihenfolge des Aufrufes von OnCloseQuery

  Alt 28. Jan 2014, 14:10
Hehe... Kennst du das? Man steht aufm Schlauch und braucht länger, hier eine Frage zu formulieren statt mal fix in die VCL-Sourcen zu gucken?
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: Reihenfolge des Aufrufes von OnCloseQuery

  Alt 28. Jan 2014, 14:15
Joar.

Kennst du das, man tippt mühevoll eine Frage zusammen und als man grade auf Antworten klicken will, fällt es einem ein. (manchmal auch erst kurz nach dem Klick)
$2B or not $2B

Geändert von himitsu (28. Jan 2014 um 14:38 Uhr) Grund: weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Reihenfolge des Aufrufes von OnCloseQuery

  Alt 28. Jan 2014, 14:22
manchmal auch erst kurz nach dem klick
Nur zu gut... Deshalb gibts hier etliche Posts von mir mit einem EDIT hintendran, wo ich die Lösung gleich nachreiche. Ich könnt das Post auch gleich wieder löschen aber vielleicht hilfts ja dann wem anders.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  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 22:34 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