Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Form soll beim Wechsel von WindowState Max > Normal alte Werte annehmen (erledigt) (https://www.delphipraxis.net/214367-form-soll-beim-wechsel-von-windowstate-max-normal-alte-werte-annehmen-erledigt.html)

DieDolly 2. Jan 2024 14:57


Form soll beim Wechsel von WindowState Max > Normal alte Werte annehmen (erledigt)
 
Im Prinzip geht es um Folgendes.

Ich habe ein Formular. Beim Beenden des Programms werden Größe, Position und WindowState gespeichert. Beim Öffnen des Programms wird das alles geladen und der WindowState Maximized angewendet, wenn der so gespeichert wurde.

Wenn ich das Formular jetzt kleiner mache und es nicht mehr maximized ist, soll es die alten, gespeicherten Werte annehmen, genau das passiert aber nicht.
Stattdessen ist es so in etwa 700x400px klein.

An welche Stelle oder in welches Event muss dann welcher Code, damit beim Wechsel von Maximized in Normal die Formgröße angewandt wird?
Ich habe es in OnCanResize versucht, hat aber keine Änderung gebracht.

mmw 2. Jan 2024 15:13

AW: Form soll beim Wechsel von WindowState Max > Normal alte Werte annehmen
 
Hallo,
evtl. im Ereignis

'OnCanResize'

http://docwiki.embarcadero.com/Libra...ol.OnCanResize

Gruß

DieDolly 2. Jan 2024 15:25

AW: Form soll beim Wechsel von WindowState Max > Normal alte Werte annehmen
 
Hatte mich vertippt, da hatte ich es schon versucht.

Selbst im OnResize funktioniert es nicht. Auch mit Hilfe dieses Codes nicht
https://stackoverflow.com/questions/...wstate-changes

Wenn ich bei wsNormal Width und Height setze, sehe ich dass es gesetzt wird. Aber kurz danach setzt Windows das Fenster wieder kleiner.

Uwe Raabe 2. Jan 2024 15:33

AW: Form soll beim Wechsel von WindowState Max > Normal alte Werte annehmen
 
Bei einem maximierten Fenster werden die Normal-Position und -Größe in einer WindowPlacement-Struktur gespeichert. Diese Struktur kann man mit Get/SetWindowPlacement lesen bzw. beschreiben. In TCustomForm.CMShowingChanged findest du eine Code-Sequenz, die das rcNormalPosition Feld der Struktur beschreibt.

Der schöne Günther 2. Jan 2024 15:36

AW: Form soll beim Wechsel von WindowState Max > Normal alte Werte annehmen
 
Reicht das nicht schon, erst die Größe und dann den WindowState auf Maximized zu setzen?

Entweder habe ich etwas verpasst, aber das hier z.B. tut doch direkt was du möchtest:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
   ClientWidth := 60;
   ClientHeight := 400;
   WindowState := TWindowState.wsMaximized;
end;

DieDolly 2. Jan 2024 16:05

AW: Form soll beim Wechsel von WindowState Max > Normal alte Werte annehmen
 
Komisch, das hatte ich auch getestet und funktionierte nicht. Jetzt funktioniert es.

himitsu 2. Jan 2024 16:23

AW: Form soll beim Wechsel von WindowState Max > Normal alte Werte annehmen
 
Entweder vor dem Maximieren die originale Größe in einer Variable speichern,

oder beim Beenden/Speichern vorher wieder unmaximieren normalisieren und dann die eigentliche Größe auslesen

oder Windows nach der originalen Größe fragen.
MSDN-Library durchsuchenGetWindowPlacement


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:56 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