![]() |
Fontcolor der Groupbox im Xp-Style
Hi Leutz,
ich suche die Farbe die der Text einer Groupbox im Xp-Style hat. Die ist nämlich keine, die im Object-Inspector ausgewählt werden kann. :? Ich hätte die Farbe ja auch zur Laufzeit von der Groupbox geholt, aber das geht auch nicht. Hat jemmand ne Idee. Das PSDK sagt auch nicht viel dazu. THX |
Re: Fontcolor der Groupbox im Xp-Style
Sind die Farben im Luna-Style nicht von Windows vorgegeben? Vielleicht kann man sie ja in Anzeigeeinstellungen->Darstellung->Erweitert einstellen. Aber ob das Delphi geht? :gruebel:
|
Re: Fontcolor der Groupbox im Xp-Style
Also ich bin gerade mal die Erweiterten Einstellungen der Darstellungsoptionen durchgegangen. Da find ich die Farbe auch nicht.
Ich will sie ja nichtmal einstellen. Nur wissen (je nach XP-Style eben). |
Re: Fontcolor der Groupbox im Xp-Style
Dazu benötigst Du die Funktion GetThemeSysColor aus der Themes-DLL.
In D7 sollte die Funktion schon in Delphi vorhanden sein. Falls nicht mußt du entsprechende Themes-Komponenten dir besorgen (z.B. das Elpack bietet XP-Theming auch für altere Delphi-Versionen/Windows-Versionen an). |
Re: Fontcolor der Groupbox im Xp-Style
Ok, hab die Funktion jetzt gefunden.
Hab ein paar Farben durchprobiert (allerdings hab ich HTheme 0 gesetzt weil ich nich wusste wie man das bekommt). Leider sind das nur die Farben, die der Objekt-Inspektor auch anzeigt. Kann das an der 0 liegen für HTheme?, wie bekommt man das? |
Re: Fontcolor der Groupbox im Xp-Style
Wenn du Delphi7 hast, kannst du dir die Unit Themes anschauen. Dort gibts eine enstprechende Funktion. Aber ich bin daraus nicht schlau geworden (Ich habe ebenfalls das Problem, das du hast, jedoch mit einem PageControl)
mfG mirage228 |
Re: Fontcolor der Groupbox im Xp-Style
Hi ALL,
also ich hab nochmal genauer nachgeschaut und bin auf ![]() Das Programm, geschrieben in C++, kann die jeweiligen Theme-Elemente zeichnen und auch den Text ausgeben, in meiner gesuchten Farbe. Nur kapier ich nicht ganz wie. Ich bin gerade hier:
Delphi-Quellcode:
Ich bin mir nur nicht sicher was ich bei OpenThemeDate als Parameter angeben soll. Ich finde nirgends eine Doku darüber. Das PSDK sagt nur:
var pcolor : TColorREF;
hhtheme : HTheme; begin hhTheme:= OpenThemeData(Application.handle,'Button;GroupBox'); if hhTheme = 0 then showMessage('0'); //Wenn HTheme nicht gefunden GetThemeColor(hhTheme, BP_GROUPBOX, GBS_NORMAL,color,pcolor); Configuration_General_Title_label.font.color := pcolor; CloseThemeData(hhTheme); end; Zitat:
Wenn ich das Probgramm aber starte, ist die Farbe trotzdem Schwarz und nicht Blau. |
Re: Fontcolor der Groupbox im Xp-Style
[quote]Hab ein paar Farben durchprobiert (allerdings hab ich HTheme 0 gesetzt weil ich nich wusste wie man das bekommt). [cl]
Wie Du an die Themes-Handle kommst kann ich dir nicht sagen, da ich nur Controls einsetze (ElPack) welche einen integrierten Themes-Support haben und dort ist das Handle unter XP-Themes immer richtig gesetzt. Evtl. hat auch der ![]() |
Re: Fontcolor der Groupbox im Xp-Style
@mirage228
Die Themes Unit ist ein Teil von Mike Lischkes Theme Manager. Die eigentliche Unit ist UxTheme. Diese enthällt die Proceduren die wir brauchen. So z.B. GetThemeColor u.a. Das Problem ist, diese Proceduren und Funktionen sind in ner Library. Und da weiß ich nicht wie ich dran kommen soll. :? Und diese zu benutzen klappt irgendwie nicht. :wall: @Bernhard Geyer Hab deinen Text gerade noch gelesen. Der Theme Manager baut ja auf dem Problem auf, also nützt er mir auch nicht viel. (siehe oben) |
Re: Fontcolor der Groupbox im Xp-Style
Ich hab jetzt eine für mich akzeptable Lösung.
Unzwar ist mir beim Durchgehen des Programms auf das ich verwiesen hatte eines aufgefallen. Die Schrift passend zum Start-Menu-Button konnte ebenfalls Problemlos mit der selben Procedure dargestellt werden. So eine Schrift kann man aber nicht in nem gewöhnlichem Label ausgeben. Also muss sie Windows selbst zeichnen. Das heißt sozusagen es gibt keine Möglichkeit, soweit ich das jetzt mitbkommen habe, nur die Farbe rauszubekommen. Das einzigste was man kann ist die Prozedure zu benutzen um den Text zu zeichnen. Und so hab ich es dann auch gemacht:
Delphi-Quellcode:
Vielleicht hilft es euch!
var hhtheme : HTheme;
begin hhTheme:= OpenThemeData(MainForm.Handle,'Button'); DrawThemeText(hhTheme,label.Canvas.Handle,BP_GROUPBOX, GBS_NORMAL, 'Hallo', -1, DT_LEFT, 0,label.Canvas.ClipRect); CloseThemeData(hhTheme); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz