![]() |
[FMX] Ereignis bei Restore?
Huhu!
Mein Programm ist ein Fenster ohne Rahmen (BorderStyle = None), welches ich bei Programmstart maximiere:
Delphi-Quellcode:
. Wenn man nun mittels der Windows-Funktion "Desktop anzeigen" alle Fenster zwangs-versteckt, und mein Programm anschließend wieder sichtbar macht, hat es auf ein Mal wieder die Größe, die es per Default nach dem Start hat, und WindowState ist wsNormal. Da es keine Titelleiste gibt, hat man jetzt keine Chance mehr das Fenster zu maximieren.
WindowState := TWindowState.wsMaximized;
(Das Programm soll auf einem 2. Bildschirm hinter Glas, vom PC-Bediener abgewandt ohne Eingaben laufen - reine Anzeige von Messwerten für den Produktionsraum. Daher kann da auch keiner so einfach mal eben ein normales Fenster maximieren.) Das ist ziemlich doof. Soll das so sein? Kann man das Verhalten irgendwo ändern? Ich behelfe mir aktuell mit einem Timer, der immer wieder wsMaximized setzt (was lustigerweise das per "Desktop anzeigen" versteckte Fenster NICHT wiederherstellt). Aber wirklich schön finde ich das jetzt nicht. Auch ein Ereignis das da irgendwie passen könnte finde ich nicht. Gab's früher nicht mal ein OnRestore() warum ist das weg? Viele Grüße und besten Dank schon mal! |
AW: [FMX] Ereignis bei Restore?
Anstelle eines Timer kannst du doch die Message WM_WINDOWPOSCHANGING auswerten und entsprechend darauf reagieren.
Delphi-Quellcode:
EDIT:
type
TForm1 = class(TForm) private procedure WMWindowPosChanging(var Message: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING; end; implementation const SWP_STATECHANGED = $8000; procedure TForm1.WMWindowPosChanging(var Message: TWMWindowPosChanging); begin inherited; if (Message.WindowPos^.flags and (SWP_STATECHANGED or SWP_FRAMECHANGED)) <> 0 then begin if (Message.WindowPos^.x < 0) and (Message.WindowPos^.y < 0) then // State is Maximized ShowMessage('Window state is about to change to MAXIMIZED'); // or do what your want so is maximized again. end; end; Du kannst auch mit
Delphi-Quellcode:
if not IsZoomed(MainHandle) then
prüfen ob das Fenster nicht Maximiert ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz