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/)
-   -   Fenster vergrößern/verkleinern - Sensivität (https://www.delphipraxis.net/194858-fenster-vergroessern-verkleinern-sensivitaet.html)

Der schöne Günther 16. Jan 2018 17:05

Fenster vergrößern/verkleinern - Sensivität
 
Liste der Anhänge anzeigen (Anzahl: 1)
Gibt es einen einfachen Weg für ein VCL-Fenster den "Abstand" einzustellen ab welchem man ein Fenster in der Größe verändert, sprich: Wie "nah" man mit der Maus ran muss?

Anhang 48349

hoika 16. Jan 2018 17:39

AW: Fenster vergrößern/verkleinern - Sensivität
 
Hallo,
hm, das ist doch Windows-Sache.
Oder kennst du ein Programm, was anders reagiert wie alle anderen?

samso 16. Jan 2018 18:10

AW: Fenster vergrößern/verkleinern - Sensivität
 
Im geringen Maße (einige Pixel) kann man das via Reaktion auf WM_NCHITTEST beeinflussen. Das heißt man kann innerhalb des (fast unsichtbaren) Fensterrahmens den Abstand vergrößern. Das ist hängt aber auch noch vom gewählten Design ab (hoher Kontrast oder eben nicht). "Einfach" würde ich anders definieren, aber das liegt ja bekanntlich im Auge des Betrachters..

Ich vermute Du willst aber ganz etwas anderes erreichen.

Der schöne Günther 16. Jan 2018 19:08

AW: Fenster vergrößern/verkleinern - Sensivität
 
Klar, für normale Anwendersoftware sollte man das nicht machen. Es geht hier um eine Kiosk-Anwendung mit einem schrecklich ungenauen Touch-Bildschirm.

Ich habe noch DwmExtendFrameIntoClientArea(..) gefunden, aber das hat nur optische Auswirkungen auf den Fensterrahmen, man muss ihn immer noch ziemlich genau treffen.

Ich schaue mir WM_NCHITTEST einmal genauer an.

Ich möchte einfach nur dass man einen Fensterrahmen nicht so "genau" treffen muss um ein Top-Level-Fenster in der Größe zu verändern. Dass sich das z.B. mit Child Controls auf dem Fenster selbst beißt ist mir klar.

Fukiszo 16. Jan 2018 21:38

AW: Fenster vergrößern/verkleinern - Sensivität
 
man könnte auch ein unsichtbares CONTROL an koordinaten der ecke erstellen, zum beispiel ein panel (STATIC),
das bei "FormCreate" (oder wie das so heisst) mit einem TRECT wert des aktuellen unsichtbaren abfragen und per TPOINT deine aktuelle cursor position mit TRECT vergleichen, wenn der TPOINT innerhalb des TRECT ist deine routine starten die die größe ändert.

kleiner ansatz für diese möglichkeit:
GetCursorPos(TPoint1); // aktuelle cursor position
GetWindowRect(InvisibleStatic1, TRect1); // unsichtareres TRECT einlesen
if PtInRect(TRect1, TPoint1) then // hier dein code fürs vergrößern/verkleinern

achtung, dieser code kann bestimmt schlimm sein weil er auf funktionen zugreift die auch ausserhalb deines programms schabernack treiben könnten, je nach einsatz.

nachtrag #2
ich brauch echt mal ne brille, ich bin ja hier bei firemonkey... upps, tut mir leid!

nachtrag:
du kannst natürlich auch per GetCursorPos koordinaten abfangen die du bestimmst
und SetCursorPos den cursor dahin schubsen wenn er in nähe einer bestimmten koordinate kommt
und den maus click virtuell wiederholen.

Jasocul 17. Jan 2018 06:17

AW: Fenster vergrößern/verkleinern - Sensivität
 
Hilft hier vielleicht einfach ein TStatusBar mit aktiver Eigenschaft SizeGrip?
[EDIT]
Habe gerade gesehen, dass es unter Firemonkey sogar eine eigenständige Kompomente TSizeGrip gibt. TStatusBar ist daher nicht mal erforderlich.


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