AGB  ·  Datenschutz  ·  Impressum  







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

WM_ENTERSIZEMOVE / WM_EXITSIZEMOVE mit TFrame?

Ein Thema von taveuni · begonnen am 19. Apr 2023 · letzter Beitrag vom 19. Apr 2023
Antwort Antwort
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
526 Beiträge
 
Delphi 11 Alexandria
 
#1

WM_ENTERSIZEMOVE / WM_EXITSIZEMOVE mit TFrame?

  Alt 19. Apr 2023, 08:16
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.
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.014 Beiträge
 
Delphi 12 Athens
 
#2

AW: WM_ENTERSIZEMOVE / WM_EXITSIZEMOVE mit TFrame?

  Alt 19. Apr 2023, 09:40
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: WM_ENTERSIZEMOVE / WM_EXITSIZEMOVE mit TFrame?

  Alt 19. Apr 2023, 10:27
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)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.014 Beiträge
 
Delphi 12 Athens
 
#4

AW: WM_ENTERSIZEMOVE / WM_EXITSIZEMOVE mit TFrame?

  Alt 19. Apr 2023, 12:28
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
526 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: WM_ENTERSIZEMOVE / WM_EXITSIZEMOVE mit TFrame?

  Alt 19. Apr 2023, 13:16
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
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  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:29 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