Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   FMX - Borderstyle := None - Snap-Funktion von Windows (https://www.delphipraxis.net/209827-fmx-borderstyle-%3D-none-snap-funktion-von-windows.html)

sintronic86 27. Jan 2022 08:31

FMX - Borderstyle := None - Snap-Funktion von Windows
 
Hallo Delphi-Gemeinde,

nach langer Zeit ohne Fragen, ist gerade wieder eine aufgetaucht.

Ich habe eine Beispielanwendung erstellt (FMX). Den Borderstyle der Form habe ich auf None gesetzt.
Verschieben des Fensters funktioniert einwandfrei über

Code:
procedure TformMain.Rectangle1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
begin
  if (Button = TMouseButton.mbLeft) then StartWindowDrag;
end;
Allerdings funktioniert damit die Snap-Funktion von Windows (Fenster mit der Maus an den Bildschirmrand ziehen, und dieses dockt dann automatisch auf halbe Bildschrimgröße an) nicht!

Hat jemand von euch eine Idee, wie dass trotzdem funktioniert, bzw. eine bessere Möglichkeit, Fenster trotz
Code:
Borderstyle := None
verschieben zu können?


Ich danke bereits im Vorraus!
Gruß Björn

KodeZwerg 27. Jan 2022 09:02

AW: FMX - Borderstyle := None - Snap-Funktion von Windows
 
Automatisches Snap ist Border-abhängig soweit ich weiß. Kein Border kein Snap.
Diese Funktionalität musst Du wohl selbst einbauen bei Borderless Window.

sintronic86 27. Jan 2022 09:11

AW: FMX - Borderstyle := None - Snap-Funktion von Windows
 
@KodeZwerg

Das wäre ziemlich schade. Letztendlich habe ich den Border nur entfernt, weil ich so weit mehr mit der Fensteroptik spielen kann, ohne die windowseigene Titelleiste etc. verwenden zu müssen.

Hättest du denn für eben diesen Optik-Fall eine andere Lösung, die die Snap-Funktion mit unterstützt?

KodeZwerg 27. Jan 2022 09:32

AW: FMX - Borderstyle := None - Snap-Funktion von Windows
 
Das einfachste wäre wohl, in deinem Drag Event den Border zu aktivieren solange man die Maus drückt und dann wieder zu deaktivieren. Es würde merkwürdig aussehen aber die Funktionalität wäre gegeben.
Zweite Variante halt alles selber nachprogrammieren was bei Snap so passiert.
Prüfen ob eine Seite des Formulars den Rand berührt um dann die Form-Size zu setzen etc... es ist mühsam aber möglich.

sintronic86 27. Jan 2022 11:00

AW: FMX - Borderstyle := None - Snap-Funktion von Windows
 
Leider bekommt er das zwischen MouseDown und MouseUp nicht hin, den Borderstyle zu ändern!

Selber bauen wäre zwar machbar, aber damit sind ja die "schönen" Windows-Effekte leider nicht mehr da.
P.S.: Ich nutze Windows 11!

venice2 27. Jan 2022 11:09

AW: FMX - Borderstyle := None - Snap-Funktion von Windows
 
Zitat:

Zitat von sintronic86 (Beitrag 1501278)
Leider bekommt er das zwischen MouseDown und MouseUp nicht hin, den Borderstyle zu ändern!

Selber bauen wäre zwar machbar, aber damit sind ja die "schönen" Windows-Effekte leider nicht mehr da.
P.S.: Ich nutze Windows 11!

Falls es dir nur um das Snap geht schau dir das Video an.
Wenn es dir zusagt kann ich dir einen Link zu meiner Magnetic unit mit Beispiel schicken.

Dies arbeitet aber nur zuverlässig mit Popup Windows (Borderstyle := None) weil ich die Schatten der Fenster nicht mit berücksichtige.

Zitat:

Allerdings funktioniert damit die Snap-Funktion von Windows (Fenster mit der Maus an den Bildschirmrand ziehen, und dieses dockt dann automatisch auf halbe Bildschrimgröße an) nicht!
Das tut sie jedoch nicht auch wenn es ohne Probleme nachbaubar wäre..
Sie dockt das Window nur an das Fenster mit angegebener Snapweite an.

KodeZwerg 27. Jan 2022 12:30

AW: FMX - Borderstyle := None - Snap-Funktion von Windows
 
Funktioniert dein "Magnet" auch mit FMX?

Wobei snapping ja mehr ist, zieh es die obere Bildschirmgrenze = maximize
Rechte Grenze = halber Bildschirm etc...

venice2 27. Jan 2022 12:48

AW: FMX - Borderstyle := None - Snap-Funktion von Windows
 
Zitat:

Zitat von KodeZwerg (Beitrag 1501286)
Funktioniert dein "Magnet" auch mit FMX?

Wobei snapping ja mehr ist, zieh es die obere Bildschirmgrenze = maximize
Rechte Grenze = halber Bildschirm etc...

Siehe
Zitat:

Das tut sie jedoch nicht auch wenn es ohne Probleme nachbaubar wäre..
Auch bei FMX ist ein Fenster ein Fenster oder?

Aber Ja habe mich damit noch nicht groß befaßt.
Verwende lieber direkt OpenGL und DirectDraw etc.

jaenicke 27. Jan 2022 14:54

AW: FMX - Borderstyle := None - Snap-Funktion von Windows
 
Aber selbst wenn das klappt, würde immer noch z.B. die Hover-Auswahl über dem Maximieren-Button fehlen.

Ich habe früher selbst mit eigenen Fensterrändern usw. experimentiert, aber solche Programme fühlen sich heute eher (wie früher Java-Programme) als Fremdkörper an. Heutige Java-Programme sehen unter Windows ja ganz normal aus.

Bei den Möglichkeiten, die es heute gibt, halte ich nicht viel davon den Aufwand in eigene Lösungen für solche Anpassungen zu stecken. Woran ich früher wochenlang getüftelt habe, kann ich heute mit ein paar Klicks und nur wenig Quelltext einfach einstellen...
Und solche Programme fügen sich nahtlos in Windows ein.

Schade ist, dass die FMX-Styles (zumindest die, die ich ausprobiert habe) die Titelleiste nicht mit stylen. Das klappt bei den VCL-Styles sehr gut und man kann das AFAIK auch für FMX speichern und dann dort laden.


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