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/)
-   -   WM_ENTERSIZEMOVE / WM_EXITSIZEMOVE mit TFrame? (https://www.delphipraxis.net/212886-wm_entersizemove-wm_exitsizemove-mit-tframe.html)

taveuni 19. Apr 2023 08:16

WM_ENTERSIZEMOVE / WM_EXITSIZEMOVE mit TFrame?
 
Hallo zusammen,
Ich benötige eine Benachrichtigung wenn ein TFrame in der Grösse verändert wird. Und zwar den Beginn und das Ende. In einem Form kann man das so machen:
Delphi-Quellcode:
 protected
    procedure WMEnterSizeMove(var Message: TMessage); message WM_ENTERSIZEMOVE;
    procedure WMExitSizeMove(var Message: TMessage); message WM_EXITSIZEMOVE;

procedure TFormMain.WMEnterSizeMove(var Message: TMessage);
begin
  Logger.Info('enter_size_moved');
end;

procedure TFormMain.WMExitSizeMove(var Message: TMessage);
begin
  Logger.Info('exit_size_moved');
end;
In einem TFrame scheint dies nicht zu funktionieren? Gibt es da eine andere Möglichkeit?
Ich kann auch nicht das ParentForm überwachen. Weil der Resize kann auch via Splitter und anderen Controls verursacht werden. Ohne das die ParentForm die Grösse ändert.

Uwe Raabe 19. Apr 2023 09:40

AW: WM_ENTERSIZEMOVE / WM_EXITSIZEMOVE mit TFrame?
 
Das Konzept kann bei Frames nicht funktionieren (wie auch nicht bei anderen Controls auf dem Form), da diese innerhalb der VCL z.B. über Align oder Anchors ihre Größe anpassen. Dabei sind keine Windows-Messages mehr beteiligt.

Man bedenke nur den Fall, wenn der Frame Align = alNone hat und beim Ändern des Forms seine Größe beibehält. Also rein vom Windows-Gesichtspunkt hat das Resize des Forms überhaupt nichts mit dem Resize der enthaltenen Frames oder Controls zu tun.

Übrigens kann das Resize auch durch eine Änderung des Scalings ausgelöst werden.

himitsu 19. Apr 2023 10:27

AW: WM_ENTERSIZEMOVE / WM_EXITSIZEMOVE mit TFrame?
 
Es gibt auch irgendeine virtuelle Methode, die kann man für das Resize/Align überschreiben (innerhalb der VCL)
und kann/darf dort auch "manuell" positionieren. (sollte bei dieser/diesen Komponente(n) aber auch das Align auf alCustom stehen)

Uwe Raabe 19. Apr 2023 12:28

AW: WM_ENTERSIZEMOVE / WM_EXITSIZEMOVE mit TFrame?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1521225)
Das Konzept kann bei Frames nicht funktionieren

Was ich damit sagen will: Es gibt für Frames den Begriff eines BeginResize und EndResize nicht.
Bei Forms gibt es das und indirekt auch beim Splitter, wobei letzterer das eine indirekt über den OnCanResize-Event (man muss sich halt den Status merken) und das andere über den OnMoved-Event zur Verfügung stellt.

Wenn du das umsetzen willst, wirst du wohl nicht über eine Kombination von "in das Form einhängen" und "in den Splitter einhängen" drum herum kommen.

taveuni 19. Apr 2023 13:16

AW: WM_ENTERSIZEMOVE / WM_EXITSIZEMOVE mit TFrame?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1521232)
Wenn du das umsetzen willst, wirst du wohl nicht über eine Kombination von "in das Form einhängen" und "in den Splitter einhängen" drum herum kommen.

Genau. So etwas wird es sein müssen.
Danke


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