Forums Neueste Beiträge
 

Probleme: Lib "GDI32": FillRgn und SetTextColor

01/02/2010 - 21:00 von Gregor Thul | Report spam
Hallo
ich will in einem Grid (TrueDBGrid von ComponentOne) in einigen Zellen
selbst Text hineinschreiben. Die Farbe des Hintergrundes und des Textes lege
ich mit den Funktionen FillRgn und SetTextColor aus der Windows-GDI fest.
Jetzt habe ich festgestellt das diese beiden Funktionen die normalen
Farb-Konstanten vbRed, vbBlack usw.. ohne Probleme akzeptieren. Benutze ich
aber die Konstanten für die Systemfarben wie z.B. vbHighlightText dann
werden diese nicht übernommen. Es wird nur noch schwarz gezeichnet. Das hat
nichts mit dem Grid zu tun. Wenn ich in eine normale Form zeichne und
schreibe ist auch alles schwarz mit den Systemkonstanten.
Hat jemand eine Idee. Oder vielleicht sogar eine Lösung. Sind diese
Funktionen vielleicht auf einige wenige Farben beschrànkt?
Vielen Dank schon mal.

Grüße
Gregor
 

Lesen sie die antworten

#1 Thorsten Albers
01/02/2010 - 21:31 | Warnen spam
Gregor Thul schrieb im Beitrag
<hk7c3s$spl$00$...
ich will in einem Grid (TrueDBGrid von ComponentOne) in einigen Zellen
selbst Text hineinschreiben. Die Farbe des Hintergrundes und des Textes


lege
ich mit den Funktionen FillRgn und SetTextColor aus der Windows-GDI fest.
Jetzt habe ich festgestellt das diese beiden Funktionen die normalen
Farb-Konstanten vbRed, vbBlack usw.. ohne Probleme akzeptieren. Benutze


ich
aber die Konstanten für die Systemfarben wie z.B. vbHighlightText dann
werden diese nicht übernommen. Es wird nur noch schwarz gezeichnet. Das


hat
nichts mit dem Grid zu tun. Wenn ich in eine normale Form zeichne und
schreibe ist auch alles schwarz mit den Systemkonstanten.
Hat jemand eine Idee. Oder vielleicht sogar eine Lösung. Sind diese
Funktionen vielleicht auf einige wenige Farben beschrànkt?



Nein. Wenn Du Dir die Werte dieser Systemfarben-Konstanten anschaust, wirst
Du feststellen, daß sie alle im Bereich &H80000000 - &H800000FF liegen,
sich also nur im niederwertigsten Byte unterscheiden. Es handelt sich also
nicht um RGB-Farbwerte, sondern um bestimmte Codes. Die &H80 im
höchstwertigen Byte zeigt dabei an, daß es sich im niederwertigsten Byte um
einen Index in die Systemfarben-Tabelle handelt. Zum umwandeln des Index in
den entsprechenden Farbwert kannst Du die Windows-API-Funktion
OLETranslateColor() (olepro32.dll) nehmen.

Thorsten Albers

albers (a) uni-freiburg.de

Ähnliche fragen