AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Wie den transparenten Fensterrand von Win10-Fenster intransparent werden lassen?

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

Ein Thema von r29d43 · begonnen am 26. Sep 2016 · letzter Beitrag vom 27. Sep 2016
Antwort Antwort
Seite 1 von 2  1 2   
r29d43

Registriert seit: 18. Jan 2007
275 Beiträge
 
Delphi 10.4 Sydney
 
#1

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

  Alt 26. Sep 2016, 15:09
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.562 Beiträge
 
Delphi 10.4 Sydney
 
#2

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

  Alt 26. Sep 2016, 15:21
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (26. Sep 2016 um 15:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.219 Beiträge
 
Delphi 10.4 Sydney
 
#3

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

  Alt 26. Sep 2016, 15:23
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.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
430 Beiträge
 
#4

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

  Alt 26. Sep 2016, 16:52
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

Geändert von samso (26. Sep 2016 um 16:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.219 Beiträge
 
Delphi 10.4 Sydney
 
#5

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

  Alt 26. Sep 2016, 17:21
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!
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
r29d43

Registriert seit: 18. Jan 2007
275 Beiträge
 
Delphi 10.4 Sydney
 
#6

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

  Alt 26. Sep 2016, 18:07
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. (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).

Geändert von r29d43 (26. Sep 2016 um 18:24 Uhr)
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
430 Beiträge
 
#7

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

  Alt 26. Sep 2016, 18:11
@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.
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

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

  Alt 26. Sep 2016, 18:30
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.
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.219 Beiträge
 
Delphi 10.4 Sydney
 
#9

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

  Alt 26. Sep 2016, 18:55
@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).
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
430 Beiträge
 
#10

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

  Alt 27. Sep 2016, 10:33
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 13:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf