![]() |
FormResize-Method und Border
Hi,
gibt es eine Chance in der FormResize-Methode (FMX) festzustellen, ob der User noch am Border am resizen ist oder nicht? Wenn das FormResize ein einmalige Ereignis ist, wie Maximized->Normal oder Bildschirm-Wechsel funktioniert bei mir alles tadellos, aber wenn der User selbst am Rand der Anwendung (im Status Normal) die Größe ändert, will ich einen Part des Codes nur durchlaufen, wenn er damit fertig ist. Grüße, Philipp |
AW: FormResize-Method und Border
Zitat:
Ist das verhalten bei einer FMX Form denn anders? Wenn gleich dann kannst du das etwa so prüfen.. Rechter Border..
Delphi-Quellcode:
if Msg = WM_NCHITTEST then
begin P.X := LoWord(lP); P.Y := HiWord(lP); GetClientRect(WinHandle, rc); xF := rc.Right; BORDER := GetSystemMetrics(32); // = SM_CXFRAME // Rechte Seite if (P.X >= xF - 8) then begin if (P.X >= xF - BORDER) then HITTEST := HTRIGHT; end; end; Wenn HITTEST = HTRIGHT dann befindest du dich über den rechten Border wenn nicht führe deine Funktion aus. Aber ob das ausreicht für dein bestreben mag dahin gestellt sein denn eigentlich werden anschließend die Anchors enumeriert. Und danach müsstest du handeln. Bei normalen Forms wirst du WM_NCHITTEST wohl überschreiben müssen..
Delphi-Quellcode:
procedure WMNCHitTest(var AMessage: TWMNCHitTest); message WM_NCHITTEST;
Nachtrag.. Für P.X, P.Y verwende besser
Delphi-Quellcode:
ansonsten kann es passieren das du bei Multimonitoren die Falsche Position bekommst.
P.X := GET_X_LPARAM(lP);
P.Y := GET_Y_LPARAM(lP); ![]() gruss |
AW: FormResize-Method und Border
Zitat:
|
AW: FormResize-Method und Border
Danke, zweiteres hört sich einfacher an, v.a. finde ich damit wirklich das Event, dass er losgelassen hat und dann kann ich wieder mit meiner Verarbeitung einsteigen.
|
AW: FormResize-Method und Border
Nur als Hinweis: Alles was bisher gesagt wurde, funktioniert nicht für Android/iOS/MacOS falls deine Anwendung auf einem dieser Betriebssysteme laufen soll :!:
|
AW: FormResize-Method und Border
Android/iOS: Da droht weniger die Gefahr, dass der User selbst am Border die Größe zieht, oder?
MacOS/Linux: Ja, ist mir klar, dass dies gerade ein Windows-Only-Workaround ist. Ich habe auch eine allgemein gültige Lösung, dass ich den kritischen Part im FormResize nicht öfter als alle 300ms durchführe, aber dieser Workaround gefällt mir bisher nur so halb. |
AW: FormResize-Method und Border
Keine Ahnung was ihr hier von euch gebt aber unter Windows wird beim Klick\Move auf den Rahmen HITTEST\WM_NCHITTEST WM_NCLBUTTONDOWN ausgelöst. (Aber ich bin ja doof nicht wahr? )
OK FireMonkey interessiert mich nicht weiter falle da immer wieder drauf rein. Bin raus. :) gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:36 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