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/)
-   -   clBtnFace soll wieder clBtnFace sein (https://www.delphipraxis.net/173762-clbtnface-soll-wieder-clbtnface-sein.html)

taaktaak 14. Mär 2013 19:05

clBtnFace soll wieder clBtnFace sein
 
Moin, Moin.

Also der Titel klingt seltsam, trifft aber mein Problem: Nachdem ich nun von XP auf Win7 umsteigen musste plagen mich diverse Veränderungen. Eine davon ist, dass clBtnFace in Win7 viel, viel heller als clBtnFace in XP ist. Das führt dazu, dass ich (schon etwas älter) viele Controls (PageControl, Statusbar etc.) kaum mehr verwenden kann, ohne angestrengt mit der Nase vor dem Bildschirm zu kleben. Über Sinn und Unsinn dieser kaum mehr erkennbaren Kontraste will ich hier nicht diskutieren - auch wenn ich das einfach nur zum kot.. finde.

Konkrete Frage ist folgende: Gibt es einen Weg (nur für die eigenen Delphi7-Programme) den Farbwert von clBtnFace auf einen dunkleren Farbwert zu ändern? In der Registry soll nix verändert werden. Alles soll nur für die Anwendung gelten. Außerdem will ich natürlich nicht an hunderten von Stellen den Programmcode ändern.

Hoffe ich habe mich verständlich audsgedrückt...
:?

Namenloser 14. Mär 2013 19:47

AW: clBtnFace soll wieder clBtnFace sein
 
Liste der Anhänge anzeigen (Anzahl: 1)
Du kannst die Farbwerte ja für dich selbst systemweit anders einstellen. Ansonsten halte dich doch bitte an den Systemstandard und lass dem Anwender die Wahl... ich kann das überhaupt nicht leiden, wenn Entwickler meinen, speziell für ihr Programm eine Ausnahme machen zu müssen. Farben sollte man sowieso nur in Ausnahmefällen hardcoden...

sx2008 14. Mär 2013 19:48

AW: clBtnFace soll wieder clBtnFace sein
 
Du könntest die API-Funktion GetSysColor() auf deine eigene Funktion umbiegen.

Um die API-Funktion umzuleiten müsste man einen Hook setzen.
Hier gibt es dazu ein Beispiel wie man eine API-Funktion umleiten kann.
http://www.ic0de.org/archive/index.php/t-10009.html

Namenloser 14. Mär 2013 19:53

AW: clBtnFace soll wieder clBtnFace sein
 
Zitat:

Zitat von sx2008 (Beitrag 1207451)
Du könntest die API-Funktion GetSysColor() auf deine eigene Funktion umbiegen.

Es ist fraglich, ob das funktionieren würde, da Windows selbst für das Zeichnen zuständig ist. Die VCL usw. konvertiert die System-Farbe niemals explizit, das wird einfach so durchgereicht...

Furtbichler 15. Mär 2013 06:47

AW: clBtnFace soll wieder clBtnFace sein
 
Zitat:

Zitat von NamenLozer (Beitrag 1207450)
Du kannst die Farbwerte ja für dich selbst systemweit anders einstellen. Ansonsten halte dich doch bitte an den Systemstandard und lass dem Anwender die Wahl... ich kann das überhaupt nicht leiden, wenn Entwickler meinen, speziell für ihr Programm eine Ausnahme machen zu müssen. Farben sollte man sowieso nur in Ausnahmefällen hardcoden...

:thumb: Kann mich dem nur anschließen.

taaktaak 15. Mär 2013 13:59

AW: clBtnFace soll wieder clBtnFace sein
 
Ok, danke für die Antworten - dann wird das also in der Registry geändert!

Ich kann allerdings nicht erkennen, was "böses" an dem Gedanken sein soll, wenn in meinem Programm die Oberfläche, die Buttons etc. eine etwas dunklere Farbe haben sollen als Windows dies mit der Standardeinstellung vorschreibt! Und das mit dem Ziel, die Lesbarkeit wieder auf ein vernünftiges Maß zu bringen. ALLES ÜBRIGE kann ja gern in dem kontrastlosen "Windows-Farb-Matsch" bleiben...

ABER: Unberechtigt ist dieser Einwand nicht! Man kann es auch übertreiben. In meinem Videoschnitt-Programm eines nicht unbekannten Herstellers ist die Oberfläche SCHWARZ mit WEISSER Schrift - diesen Kontrast empfinde ich genau so wenig angenehm!

Zum Hinweis "hardcoden" - gerade DAS mache ich ja NICHT, sonst wären schnell per "Text ersetzen" alle Farben geändert gewesen.

p80286 15. Mär 2013 14:44

AW: clBtnFace soll wieder clBtnFace sein
 
Auch wenn ich Dein Anliegen verstehe,
wäre es nicht besser, ein eigenes Farbschema zu generieren?

Dann ist es auf Deinem Rechner so wie Du es brauchst, und andere leben mit dem was sie sowiso haben.

Gruß
K-H

taaktaak 15. Mär 2013 22:16

AW: clBtnFace soll wieder clBtnFace sein
 
Zitat:

wäre es nicht besser, ein eigenes Farbschema zu generieren?
Ja, das ist wohl die pragmatische Lösung!
Beenden wir das Thema damit :-D

Furtbichler 16. Mär 2013 11:49

AW: clBtnFace soll wieder clBtnFace sein
 
Zitat:

Zitat von taaktaak (Beitrag 1207568)
Ich kann allerdings nicht erkennen, was "böses" an dem Gedanken sein soll, wenn in meinem Programm die Oberfläche, die Buttons etc. eine etwas dunklere Farbe haben sollen als Windows dies mit der Standardeinstellung vorschreibt! Und das mit dem Ziel, die Lesbarkeit wieder auf ein vernünftiges Maß zu bringen. ALLES ÜBRIGE kann ja gern in dem kontrastlosen "Windows-Farb-Matsch" bleiben...

Auch wenn das Thema geschlossen ist, eine Anmerkung:

Ich habe Ähnliches erlebt, speziell die Page Controls und die Buttons waren vom Kontrast her einfach Mümpitz. Und ich Trottel habe dann auch erst versucht, die Farbe zu ändern, bis... ja bis ich die Anwendung mal auf einem PC hab laufen lassen. Entwickelt wurde das auf meinem Laptop. Und siehe da: Alles in Butter.

Es lag an meinem Laptop/LCD, der einfach zu blöd ist die Grauwerte in *G*r*a*u* darzustellen. Das blöde Teil interpretiert 'grau' nämlich als 'weiß'.


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