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/)
-   -   Wie den transparenten Fensterrand von Win10-Fenster intransparent werden lassen? (https://www.delphipraxis.net/190347-wie-den-transparenten-fensterrand-von-win10-fenster-intransparent-werden-lassen.html)

r29d43 26. Sep 2016 14:09

Wie den transparenten Fensterrand von Win10-Fenster intransparent werden lassen?
 
Hallo,

gibt es für Win10-Programme eigentlich irgendeine Möglichkeit (z.B. eine spezielle Property-Einstellung o.ä.), um diesen dort immer ca. 5-7 Pixels breiten transparenten Window-Rand bei Bedarf dann auch mal NICHT transparent werden lassen zu können. So wie bei Win7 z.B., wo diese Fensterränder ja auch (immer) NICHT transparent waren/sind.

Hintergrund: Bei einem Win7-Prog, das ich gerade nach Win10 transferiere, stört diese transparent-Optik des Fensterrandes einfach enorm. Dieses Prog ist u.a. in der Lage, relativ komfortabel mehrere andere Windows desselben Progs je nach User-Wunsch immer so zu positionieren, dass dabei immer eine mehr oder weniger gemeinsame zusammengehörende Infofläche entsteht. Notwendig hierfür ist also, dass diese Progfenster dann alle auch immer bündig zueinander abschließen. Was also heißt: Solche dann gemeinsam 14 Pixel breite durchsichtige Fensterränder zwischen den einzelnen Fensterinhalten, in denen dann noch u.U. irgendein Geschehen darunter (Output anderer Progs z.B.) zu sehen wäre, würden wirklich stören.

Thx im Voraus.

himitsu 26. Sep 2016 14:21

AW: Wie den transparenten Fensterrand von Win10-Fenster intransparent werden lassen?
 
Windows hat mehrere Fensterstile (BorderStyle) und dann noch BorderWidth, GlassFrame (auch wenn Glass seit Win8 schon wieder ausgestorben ist), TransparentColor, ...
* Ob Windows den Rahmen "durchsichtig" macht, dass hängt vom OS und den "globalen" einstellungen des Benutzers ab. (Systemsteuerung > Darstellung und Anpassung)
* Im Grunde haben da Programme nicht persönlich dran rumzuspielen.

Du verwendest Skins/Styles, welche das gesamte Fenster skinnen.

Man kann den Rahmen auch ausblenden und selber etwas malen, das 'nen Rahmen darstellen soll.

(die Letzeren natürlich nur für eigene Programme)



Du kannst die rahmen auch übereinanderlegen, dann sind es nur noch 7 statt 14 Pixel und zusammen ist es dann 50% weniger durchsichtig.

stahli 26. Sep 2016 14:23

AW: Wie den transparenten Fensterrand von Win10-Fenster intransparent werden lassen?
 
Ich habe keine Lösung...

... aber am Wochenende genau den gleichen Ansatz 1:1 umgesetzt.
Unter Win7 sieht das richtig gut aus (zusammengehörige Formulare automatisch bildschirmfüllend angeordnet) und unter Win10 sind da bescheuerte Lücken dazwischen.

Ich hatte eigentlich gehofft, dass MS da mal nachbessert und Schatten vom Betriebssystem zeichnen lässt und die nicht im Formular unterbringt. :-(


Man könnte sicher ein eigenes Skinning verwenden (also mit aktuellem Delphi einen VCL-Style) aber das wären dann alles Notbehelfe mit ggf. nachteiligen Auswirkungen.

Überlappen der Formulare wäre wohl auch doof (würde sich nicht natürlich anfühlen). Das habe ich aber noch nicht versucht.

samso 26. Sep 2016 15:52

AW: Wie den transparenten Fensterrand von Win10-Fenster intransparent werden lassen?
 
Genau dieses Problem hatte ich auch. MS hat sich bei W10 entschlossen nun die Fenster bei der automatischer Anordnung von 2 Fenstern nebeneinander, die Fenster ohne Lücke anzuordnen. Damit die Optik so bleibt, wie der Benutzer das dann folglich erwartet, macht mein Programm das nun auch so. Dazu prüft mein Programm, ob es sich um Windows 10 mit UxTheme.IsCompositionActive handelt. Wenn ja, dann werden die Fensterrahmen weg gerechnet. Bei W7 werden sie unter den gleichen Umständen aber berücksichtigt.

Siehe auch:

http://www.delphipraxis.net/182193-f...dows-10-a.html

stahli 26. Sep 2016 16:21

AW: Wie den transparenten Fensterrand von Win10-Fenster intransparent werden lassen?
 
Also die Fenster werden etwas überlappt?
Dann ist die Frage, welches überlappt welches?
Wie kann der User ein beliebiges anfassen und die Größe ändern?

Das ist wirklich ein ... Feature. :-(

Wenn ich einen Apfel auf den Tisch lege, ist dessen Schatten doch auch nicht Teil des Apfels.

Bitte keine philosophische Diskussion starten. Ich habe sowieso Recht!

r29d43 26. Sep 2016 17:07

AW: Wie den transparenten Fensterrand von Win10-Fenster intransparent werden lassen?
 
Thx all fürs antworten.

Durch den Link nach http://www.delphipraxis.net/182193-f...ws-10-a-2.html sehe ich ja jetzt, dass mein Problem kein kleines mal eben in 2 Minuten lösbares Win10-Problem ist, sondern scheinbar schon immer ein größeres Win10-Ärgernis darstellte. Schande über MS, die gesamte Programmiererwelt derart schwerest zu behindern. :coder2: :vernupft: :vernupft: :vernupft: :vernupft: :vernupft: :vernupft: :vernupft: :vernupft: :vernupft: :vernupft: (die degradieren ihr Betriebssystem selbst, mit dem man heute aufeinmal nur noch mehr die Hälfte oder ein Viertel von davor machen kann. Ganz schön blöde sowas).

P.S.

Bliebe eventuell noch diese Form-Property "StyleElements". In der Hilfe von Delphi10.1 steht da: ".... Wenn ein benutzerdefinierter Stil aktiviert ist, können Sie...".

Von daher die Frage: Könnten vllt. solche benutzerdefinierten Stile da noch eine Möglichkeit sein?

Bezüglich Skins werde ich mich auch nochmal kurz schlau machen. (Hatte ich bisher auch noch nichts zu tun mit).

samso 26. Sep 2016 17:11

AW: Wie den transparenten Fensterrand von Win10-Fenster intransparent werden lassen?
 
@stahli

Ja, die Fenster überlappen. Und ja, der Benutzer muss dann das Fenster erst aktivieren um die Größe ändern zu können. Das Verhalten ist aber konsistent. Wenn man zwei Anwendungen nebeneinander hat (dieses ich-schiebe-die-Maus-an-den-Rand-und mein-Fenster-wird dann-auf-den-halben-Bildschirm-justiert-Feature), kann der Benutzer auch nur das aktive Fenster in der Größe ändern.

mm1256 26. Sep 2016 17:30

AW: Wie den transparenten Fensterrand von Win10-Fenster intransparent werden lassen?
 
Ich habe dieses Problem auch, aber ich weigere mich, irgend einen Fix darauf zu programmieren. Ist mir auch (fast) egal, wie das manchmal aussieht. Eine Lösung des Problems hätte ich eigentlich seitens Idera mit 10.1 Update 1 erwartet. Sie werben schließlich mit Windows 10 Kompatibilität, aber so kann man sich täuschen. :stupid:

stahli 26. Sep 2016 17:55

AW: Wie den transparenten Fensterrand von Win10-Fenster intransparent werden lassen?
 
@samso

Ich bin jetzt zu Hause und habe gerade festgestellt, dass MS für das Align zweier gedockter Fenster (links+rechts) ein besonderes Handling spendiert hat.
Man bekommt eine Art Splitter in der Mitte und nach dem Verschieben werden beide Fenstergrößen daran angepasst.

Ich sehe das aber als Workaround an und nicht als vernünftiges Fensterkonzept.
Die Splitterlösung ist schon ok, aber nicht, dass die Fenster tatsächlich überlappen.


@mm1256

Ich mache EMBA auch viele Vorwürfe, aber hierfür können sie nix.
Die Formulare werden ja von Windows bereitgestellt und gezeichnet.
Um das zu ändern müsste man halt Styles verwenden (und das bietet Delphi ja).

samso 27. Sep 2016 09:33

AW: Wie den transparenten Fensterrand von Win10-Fenster intransparent werden lassen?
 
Ich benutze ja keine aktuelle Delphi-Version. Ich vermute aber das Fenster-Snap funktioniert immer noch nicht korrekt (d.h. das der optische Rand des Fensters an den Bildschirmrand andockt). Da sehe ich schon Handlungsbedarf bei Emba. Falls das doch gefixed sein sollte - vergesst diesen unqualifizierten Beitrag einfach.

jaenicke 27. Sep 2016 11:59

AW: Wie den transparenten Fensterrand von Win10-Fenster intransparent werden lassen?
 
Zitat:

Zitat von samso (Beitrag 1348902)
Ich benutze ja keine aktuelle Delphi-Version. Ich vermute aber das Fenster-Snap funktioniert immer noch nicht korrekt (d.h. das der optische Rand des Fensters an den Bildschirmrand andockt). Da sehe ich schon Handlungsbedarf bei Emba.

Dann würde der reale Rahmen aber über den Bildschirm hinausragen. Schlecht bei Multimonitorkonfigurationen... das kann Embarcadero nicht fixen.

mquadrat 27. Sep 2016 13:32

AW: Wie den transparenten Fensterrand von Win10-Fenster intransparent werden lassen?
 
Der Rand ist bei W10 übrigens aus Usability Gründen da. Wird als breitere Zone für das Ändern der Größe und das Verschieben genutzt. Mit 4K Monitoren und höheren Auflösungen wird die Zone ja immer kleiner.

stahli 27. Sep 2016 13:49

AW: Wie den transparenten Fensterrand von Win10-Fenster intransparent werden lassen?
 
Kann ich nicht nachvollziehen.
Dann könnte man besser vom sichtbaren Formularrand 16 statt 4 Pixel anfassbar gestalten, aber nicht einen Bereich neben dem (sichtbaren) Formular.

samso 27. Sep 2016 14:01

AW: Wie den transparenten Fensterrand von Win10-Fenster intransparent werden lassen?
 
Zitat:

Zitat von jaenicke (Beitrag 1348933)
Dann würde der reale Rahmen aber über den Bildschirm hinausragen. Schlecht bei Multimonitorkonfigurationen... das kann Embarcadero nicht fixen.

Das sehe ich nicht so. Ja der reale Rand ragt dann über den Bildschirmrand hinaus.. und? Wenn ich das Fenster mir manuell so zurecht ruckele das es passt, ist das ja auch nicht anders. Und bei dem besagten "ich-schiebe-die-Maus-an-den-Rand-und mein-Fenster-wird dann-auf-den-halben-Bildschirm-justiert"-Feature ist es auch so (d.h. ich kann dann den Fensterrand auf dem falschen Monitor anfassen). MS kümmern Deine Bedenken wegen der Multimonitorkonfigurationen also überhaupt nicht.

Ich habe mir das Fenster-Snap-Feature jedenfalls so gebaut, dass es sich optisch sowohl unter W7 als auch unter W10 konsistent mit dem look-and-feel des Betriebssystems verhält. Und nach meiner Ansicht hätte Emba das ebenfalls tun sollen.

@mquadrat
Es geht ja weniger um das bloße Vorhandsein des Randes. Der war auch bei W7/W8 vorhanden. Es geht vielmehr darum, dass er transparent ist.


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