AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls (VCL) Wie bekomme ich mit ob die Anwendumg minimiert oder wieder hergestellt wird?
Thema durchsuchen
Ansicht
Themen-Optionen

(VCL) Wie bekomme ich mit ob die Anwendumg minimiert oder wieder hergestellt wird?

Offene Frage von "Der schöne Günther"
Ein Thema von Der schöne Günther · begonnen am 4. Apr 2016 · letzter Beitrag vom 4. Apr 2016
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

(VCL) Wie bekomme ich mit ob die Anwendumg minimiert oder wieder hergestellt wird?

  Alt 4. Apr 2016, 10:53
Ja, die Events OnMinimize und OnRestore der globalen Application-Variable (bzw. der TApplicationEvents -Komponente) habe ich gesehen. Nur leider funktionieren die nur wenn man das Hauptformular minimiert/maximiert, nicht aber ein modales Fenster.

Ich stelle mich zu dumm an, da einen einfachen Ausweg zu finden. Wo muss ich ansetzen? Mir fällt nur Application.HookMainWindow ein. Damit schaffe ich es immerhin das Minimieren mitzubekommen, nicht aber das Maximieren.

Kann mich jemand in die richtige Richtung stupsen?
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: (VCL) Wie bekomme ich mit ob die Anwendumg minimiert oder wieder hergestellt wird

  Alt 4. Apr 2016, 11:07
Du könntest einen Handler für die Botschaft "WM_SIZE" schreiben und dann wie folgt das Minimieren abfragen:

Delphi-Quellcode:
  if (Msg.WParam = SIZE_MINIMIZED) then
  begin
    /// ach du weia...
  end;
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: (VCL) Wie bekomme ich mit ob die Anwendumg minimiert oder wieder hergestellt wird

  Alt 4. Apr 2016, 11:12
Danke für den Tipp, das klappt aber leider nicht. In der Theorie sollte es klappen, in der Praxis scheint es die VCL besser zu wissen und ich bekomme die Nachricht erst gar nicht. Zumindest wenn ich über "HookMainWindow" gehe.

Meine temporäre Lösung sieht jetzt so aus:

Delphi-Quellcode:
procedure TBaseForm.WMSysCommand(var msg: TWMSysCommand);
var
   isModal: Boolean;
begin
   isModal := Vcl.Forms.fsModal in FormState;

   case msg.CmdType of
      SC_RESTORE:
         if isModal then [...]
      SC_MINIMIZE:
         if isModal then [...]
   end;

   inherited;
end;
Das muss natürlich an jedes Formular dran. Sollte eine 3rd-Party Komponente ein VCL-Popup aufmachen bekomme ich Minimieren/Maximieren natürlich wieder nicht mit.

Kann das jemand so unterschreiben oder ist das Mist?
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: (VCL) Wie bekomme ich mit ob die Anwendumg minimiert oder wieder hergestellt wird

  Alt 4. Apr 2016, 11:14
Zumindest für XE8 funktioniert meine Lösung - allerdings nicht mit HookMainWindow, sondern über einen ganz normalen Ereignis-Hnadler:
procedure WMSize( var Msg : TMessage ); message WM_SIZE; .
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: (VCL) Wie bekomme ich mit ob die Anwendumg minimiert oder wieder hergestellt wird

  Alt 4. Apr 2016, 11:26
Ok, gut zu wissen. Dann machen wir ja beide im Endeffekt das gleiche- Der eine über WM_SIZE, der andere über WM_SYSCOMMAND.

Ich sehe auch grade: Ich muss mir eigentlich nicht mehr viel Sorgen machen, denn Dinge wie fremde Modaldialoge (Speichern Unter-Dialog, ...) verhindern in der Regel eigentlich das Minimieren.
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#6

AW: (VCL) Wie bekomme ich mit ob die Anwendumg minimiert oder wieder hergestellt wird

  Alt 4. Apr 2016, 11:59
... verhindern in der Regel eigentlich das Minimieren.
Ich habe in diesem Zusammenhang oft übersehen die Funktion "Desktop anzeigen" zu testen.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: (VCL) Wie bekomme ich mit ob die Anwendumg minimiert oder wieder hergestellt wird

  Alt 4. Apr 2016, 12:03
Oh, der ist gut.

"Desktop anzeigen" ist streng genommen kein Minimieren. Der nimmt nur das Desktop-Fenster und legt es vor alle anderen. Für den Benutzer sieht es aber meist genauso aus wie "Alle minimieren".
  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:47 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