Difference between revisions of "Colors/de"
m (Fixed syntax highlighting; deleted category included in page template) |
|||
(10 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{Colors}} | {{Colors}} | ||
− | + | ||
− | + | __TOC__ | |
− | + | ||
− | = | + | =Überblick= |
− | Die | + | Die Standardfarben sind in der LCL (Komponentenbibliothek) TColor festgelegt. Diese Standardfarben sind mit der VCL (Komponentenbibliothek) TColor von Delphi kompatibel. Der Typ TColor kann eine RGB Farbe (3x8bit), oder eine Systemfarbe wie clDefault anzeigen. Die Komponentenbibliothek arbeitet auch mit dem Typ TFPColor des fpImage Farbsystems zusammen. Der Typ TFPColor stellt die Farben nach RGBA (4x16bit) dar und nicht wie der Typ TColor nach RGB (3x8bit) dar.<br> |
− | Die | + | |
− | <br> | + | ==Umwandlung der Werte zwischen TColor und RGB== |
− | = | + | |
− | Die Unit Graphics bietet | + | Die Unit '''Graphics''' bietet folgende Funktionen: |
− | <syntaxhighlight> | + | |
+ | <syntaxhighlight lang=pascal> | ||
function Blue(rgb: TColor): BYTE; // arbeitet nicht mit den vordefinierten Systemfarben zusammen | function Blue(rgb: TColor): BYTE; // arbeitet nicht mit den vordefinierten Systemfarben zusammen | ||
function Green(rgb: TColor): BYTE; // arbeitet nicht mit den vordefinierten Systemfarben zusammen | function Green(rgb: TColor): BYTE; // arbeitet nicht mit den vordefinierten Systemfarben zusammen | ||
Line 17: | Line 18: | ||
function FPColorToTColor(const FPColor: TFPColor): TColor; | function FPColorToTColor(const FPColor: TFPColor): TColor; | ||
function TColorToFPColor(const c: TColor): TFPColor; // arbeitet nicht mit den vordefinierten Systemfarben zusammen | function TColorToFPColor(const c: TColor): TFPColor; // arbeitet nicht mit den vordefinierten Systemfarben zusammen | ||
+ | function IsSysColor(AColor: TColorRef): Boolean; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | <br> | + | |
− | + | ==umwandeln des Typs TColor von/in den Typ String== | |
− | + | Funktionen die Strings wie "25500 oder "$AA0088" oder "clNavy" nach TColor umwandeln: | |
− | + | ||
− | + | * StringToColor | |
− | + | * StringToColorDef | |
− | + | ||
− | + | Wandelt den Typ TColor in den Typ String um: | |
− | + | ||
− | + | * ColorToString<br> | |
− | + | ||
− | + | ||
− | + | =Tabelle der Standardfarben= | |
− | + | ||
− | + | Diese vordefinierten Farbkonstanten sind mit den Farbkonstanten in Delphi kompatibel: | |
− | + | {| class="wikitable" | |
− | + | |- | |
− | + | ! Farbkonstante | |
− | + | ! Farbe | |
− | + | ! Hexadezimalwert für die Verwendung mit TColor | |
− | + | ! Beispiel | |
− | + | |- | |
− | + | | clBlack | |
− | + | | Black | |
+ | | TColor($000000); | ||
+ | | style="background: #000000" | | ||
+ | |- | ||
+ | | clMaroon | ||
+ | | Maroon | ||
+ | | TColor($000080); | ||
+ | | style="background: #800000" | | ||
+ | |- | ||
+ | | clGreen | ||
+ | | Green | ||
+ | | TColor($008000); | ||
+ | | style="background: #008000" | | ||
+ | |- | ||
+ | | clOlive | ||
+ | | Olive Green | ||
+ | | TColor($008080); | ||
+ | | style="background: #808000" | | ||
+ | |- | ||
+ | | clNavy | ||
+ | | Navy Blue | ||
+ | | TColor($800000); | ||
+ | | style="background: #000080" | | ||
+ | |- | ||
+ | | clPurple | ||
+ | | Purple | ||
+ | | TColor($800080); | ||
+ | | style="background: #800080" | | ||
+ | |- | ||
+ | | clTeal | ||
+ | | Teal | ||
+ | | TColor($808000); | ||
+ | | style="background: #008080" | | ||
+ | |- | ||
+ | | clGray | ||
+ | | Grey | ||
+ | | TColor($808080); | ||
+ | | style="background: #808080" | | ||
+ | |- | ||
+ | | clSilver | ||
+ | | Silver | ||
+ | | TColor($C0C0C0); | ||
+ | | style="background: #C0C0C0" | | ||
+ | |- | ||
+ | | clRed | ||
+ | | Red | ||
+ | | TColor($0000FF); | ||
+ | | style="background: #FF0000" | | ||
+ | |- | ||
+ | | clLime | ||
+ | | Lime Green | ||
+ | | TColor($00FF00); | ||
+ | | style="background: #00FF00" | | ||
+ | |- | ||
+ | | clYellow | ||
+ | | Yellow | ||
+ | | TColor($00FFFF); | ||
+ | | style="background: #FFFF00" | | ||
+ | |- | ||
+ | | clBlue | ||
+ | | Blue | ||
+ | | TColor($FF0000); | ||
+ | | style="background: #0000FF" | | ||
+ | |- | ||
+ | | clFuchsia | ||
+ | | Fuchsia | ||
+ | | TColor($FF00FF); | ||
+ | | style="background: #FF00FF" | | ||
+ | |- | ||
+ | | clAqua | ||
+ | | Aqua | ||
+ | | TColor($FFFF00); | ||
+ | | style="background: #00FFFF" | | ||
+ | |- | ||
+ | | clLtGray | ||
+ | | Light Grey | ||
+ | | TColor($C0C0C0); | ||
+ | | style="background: #D3D3D3" | alias: clSilver | ||
+ | |- | ||
+ | | clDkGray | ||
+ | | Dark Grey | ||
+ | | TColor($808080); | ||
+ | | style="background: #808080; color: white;" | alias: clGray | ||
+ | |- | ||
+ | | clWhite | ||
+ | | White | ||
+ | | TColor($FFFFFF); | ||
+ | | style="background: #FFFFFF" | | ||
+ | |- | ||
+ | | clCream | ||
+ | | Cream | ||
+ | | TColor($F0FBFF); | ||
+ | | style="background: #FFFBF0;" | Version: Lazarus 1.2 und höher | ||
+ | |- | ||
+ | | clMedGray | ||
+ | | Medium Grey | ||
+ | | TColor($A4A0A0); | ||
+ | | style="background: #A0A0A4;" | Version: Lazarus 1.2 und höher | ||
+ | |- | ||
+ | | clMoneyGreen | ||
+ | | Mint Green | ||
+ | | TColor($C0DCC0); | ||
+ | | style="background: #C0DCC0;" | Version: Lazarus 1.2 und höher | ||
+ | |- | ||
+ | | clSkyBlue | ||
+ | | Sky Blue | ||
+ | | TColor($F0CAA6); | ||
+ | | style="background: #A6CAF0;" | Version: Lazarus 1.2 und höher | ||
+ | |} | ||
+ | |||
=Systemfarben= | =Systemfarben= | ||
+ | |||
==Beispiel: clInfoBk, clInfoText== | ==Beispiel: clInfoBk, clInfoText== | ||
− | Systemfarben sind Farbkonstanten mit einer besonderen Bedeutung. Ihr wirklicher Wert hängt vom Kontext und dem Windowsthema ab. Sie sind keine einfachen Farben. | + | |
− | '''clInfoBk''' zum Beispiel: | + | Systemfarben sind Farbkonstanten mit einer besonderen Bedeutung. Ihr wirklicher Wert hängt vom Kontext und dem Windowsthema ab. Sie sind keine einfachen Farben. |
− | <syntaxhighlight> | + | |
+ | '''clInfoBk''' zum Beispiel: | ||
+ | |||
+ | <syntaxhighlight lang=pascal> | ||
Form1.Canvas.Brush.Color:=clInfoBk; // verwende den Standardhintergrund Pinsel für ein Hinweisfenster | Form1.Canvas.Brush.Color:=clInfoBk; // verwende den Standardhintergrund Pinsel für ein Hinweisfenster | ||
Form1.Canvas.FillRect(10,10,50,50); | Form1.Canvas.FillRect(10,10,50,50); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | ||
Ein Hinweisfenster unter MS-Windows könnte einen weißen Hintergrund haben. Unter Linux/GTK2 könnte das Hinweisfenster eine metallische Beschaffenheit haben. Wenn Sie nun einen Text in diese Fläche schreiben möchten, dann müssen Sie, wenn Sie den Text lesen möchten die Farbe auf einen Wert wie clInfoText ändern. | Ein Hinweisfenster unter MS-Windows könnte einen weißen Hintergrund haben. Unter Linux/GTK2 könnte das Hinweisfenster eine metallische Beschaffenheit haben. Wenn Sie nun einen Text in diese Fläche schreiben möchten, dann müssen Sie, wenn Sie den Text lesen möchten die Farbe auf einen Wert wie clInfoText ändern. | ||
Zum Beispiel:<br> | Zum Beispiel:<br> | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
Form1.Canvas.Brush.Color:=clInfoBk; // verwende den Pinsel für die Standardhintergrundfarbe für ein Hinweisfenster | Form1.Canvas.Brush.Color:=clInfoBk; // verwende den Pinsel für die Standardhintergrundfarbe für ein Hinweisfenster | ||
Form1.Canvas.FillRect(10,10,50,50); | Form1.Canvas.FillRect(10,10,50,50); | ||
Line 69: | Line 184: | ||
Dazu ist ein Zwischenschritt nötig.<br> | Dazu ist ein Zwischenschritt nötig.<br> | ||
Beispiel:<br> | Beispiel:<br> | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
Form1.Canvas.Brush.Color:=clInfoBk; // der Pinsel erhält die aktuellen Systemfarben | Form1.Canvas.Brush.Color:=clInfoBk; // der Pinsel erhält die aktuellen Systemfarben | ||
Form1.Canvas.FillRect(10,10,50,50); // dies erstellt einen Pinsel mit dem Farbwert | Form1.Canvas.FillRect(10,10,50,50); // dies erstellt einen Pinsel mit dem Farbwert | ||
Line 87: | Line 202: | ||
Form1.Canvas.FillRect(10,10,50,50); // jetzt, wird der Farbwert des aktuellen Themas verwendet | Form1.Canvas.FillRect(10,10,50,50); // jetzt, wird der Farbwert des aktuellen Themas verwendet | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
==Tabelle der Systemfarben== | ==Tabelle der Systemfarben== | ||
− | In der folgenden Tabelle werden die Systemfarben und ihre Bedeutung aufgelistet. Werden die Systemfarben ausserhalb des definierten Geltungsbereiches verwendet, dann ist das Ergebnis unvorhersehbar. Die Systemfarben sind immer vom aktuell verwendeten | + | In der folgenden Tabelle werden die Systemfarben und ihre Bedeutung aufgelistet. Werden die Systemfarben ausserhalb des definierten Geltungsbereiches verwendet, dann ist das Ergebnis unvorhersehbar. Die Systemfarben sind immer vom aktuell verwendeten Widget-Set (eine Sammlung von grafischen Bedienelementen) und dem aktuell verwendeten Thema (grafische Darstellung der Betriebssystemoberfläche) abhängig. |
− | + | ||
{| class="wikitable" | {| class="wikitable" | ||
! Konstante !! LCL Definition !! Unterstützte Widgetsets | ! Konstante !! LCL Definition !! Unterstützte Widgetsets | ||
Line 98: | Line 212: | ||
|- | |- | ||
|clDefault|| Verwendet die vorgesehene Standardfarbe || alle | |clDefault|| Verwendet die vorgesehene Standardfarbe || alle | ||
− | | | + | |- |
|clScrollBar|| Scrollbar Körper || alle | |clScrollBar|| Scrollbar Körper || alle | ||
− | | | + | |- |
|clBackground|| ? || alle | |clBackground|| ? || alle | ||
− | | | + | |- |
|clActiveCaption|| Titelleiste des aktiven Fensters || kein | |clActiveCaption|| Titelleiste des aktiven Fensters || kein | ||
− | | | + | |- |
|clInactiveCaption|| Titelleiste des inaktiven Fensters || kein | |clInactiveCaption|| Titelleiste des inaktiven Fensters || kein | ||
− | | | + | |- |
|clMenu|| Regular menu item background color || kein | |clMenu|| Regular menu item background color || kein | ||
− | | | + | |- |
|clWindow|| The normal background brush of unselected text. Defined for controls like TEdit, TComboBox, TMemo, TListBox, TTreeView.|| kein | |clWindow|| The normal background brush of unselected text. Defined for controls like TEdit, TComboBox, TMemo, TListBox, TTreeView.|| kein | ||
− | | | + | |- |
|clWindowFrame|| Farbe der Rahmen um das Fenster || kein | |clWindowFrame|| Farbe der Rahmen um das Fenster || kein | ||
− | | | + | |- |
|clMenuText|| Die Schriftfarbe ist zusammen mit clMenu zu verwenden || kein | |clMenuText|| Die Schriftfarbe ist zusammen mit clMenu zu verwenden || kein | ||
− | | | + | |- |
|clWindowText|| Die Schriftfarbe ist zusammen mit clWindow zu verwenden || kein | |clWindowText|| Die Schriftfarbe ist zusammen mit clWindow zu verwenden || kein | ||
− | | | + | |- |
|clCaptionText|| Textfarbe das aktiven Fensters || kein | |clCaptionText|| Textfarbe das aktiven Fensters || kein | ||
− | | | + | |- |
|clActiveBorder|| ? || kein | |clActiveBorder|| ? || kein | ||
− | | | + | |- |
|clInactiveBorder|| ? || kein | |clInactiveBorder|| ? || kein | ||
− | | | + | |- |
|clAppWorkspace|| MDIMain form background || kein | |clAppWorkspace|| MDIMain form background || kein | ||
− | | | + | |- |
|clHighlight|| Die Pinselfarbe des ausgewählten Elements || kein | |clHighlight|| Die Pinselfarbe des ausgewählten Elements || kein | ||
− | | | + | |- |
|clHighlightText|| Schriftfarbe vom ausgewählten Text (zusammen mit clHighligh). || kein | |clHighlightText|| Schriftfarbe vom ausgewählten Text (zusammen mit clHighligh). || kein | ||
− | | | + | |- |
|clBtnFace|| Button Hintergrund || kein | |clBtnFace|| Button Hintergrund || kein | ||
− | | | + | |- |
|clBtnShadow|| Farbe des Button Schattens wird verwendet, um 3D-Effekt zu erzielen || kein | |clBtnShadow|| Farbe des Button Schattens wird verwendet, um 3D-Effekt zu erzielen || kein | ||
− | | | + | |- |
|clGrayText|| Die Schriftfarbe von einem deaktiverten Element || kein | |clGrayText|| Die Schriftfarbe von einem deaktiverten Element || kein | ||
− | | | + | |- |
|clBtnText|| Button Schriftfarbe zu verwenden mit clBtnFace || kein | |clBtnText|| Button Schriftfarbe zu verwenden mit clBtnFace || kein | ||
− | | | + | |- |
|clInactiveCaptionText|| Textfarbe der inaktiven Fenstertitelleiste || kein | |clInactiveCaptionText|| Textfarbe der inaktiven Fenstertitelleiste || kein | ||
− | | | + | |- |
|clBtnHighlight|| Button Farbhervorhebung wird verwendet, um 3D-Effekt zu erzielen || kein | |clBtnHighlight|| Button Farbhervorhebung wird verwendet, um 3D-Effekt zu erzielen || kein | ||
− | | | + | |- |
|cl3DDkShadow|| ? || kein | |cl3DDkShadow|| ? || kein | ||
− | | | + | |- |
|cl3DLight|| ? || kein | |cl3DLight|| ? || kein | ||
− | | | + | |- |
|clInfoText|| Schriftfarbe für Hinweise. Ist zu verwenden mit clInfoBk || alle | |clInfoText|| Schriftfarbe für Hinweise. Ist zu verwenden mit clInfoBk || alle | ||
− | | | + | |- |
|clInfoBk|| Pinselfarbe für Hinweisse. Ist zu verwenden mit clInfoText || alle | |clInfoBk|| Pinselfarbe für Hinweisse. Ist zu verwenden mit clInfoText || alle | ||
− | | | + | |- |
|clHotLight|| ? || kein | |clHotLight|| ? || kein | ||
− | | | + | |- |
|clGradientActiveCaption|| Die zweit Farbe um die aktive Fenstertitelleiste mit verlaufenden Farben darzustellen || kein | |clGradientActiveCaption|| Die zweit Farbe um die aktive Fenstertitelleiste mit verlaufenden Farben darzustellen || kein | ||
− | | | + | |- |
|clGradientInactiveCaption|| Die zweit Farbe um die inaktive Fenstertitelleiste mit verlaufenden Farben darzustellen || kein | |clGradientInactiveCaption|| Die zweit Farbe um die inaktive Fenstertitelleiste mit verlaufenden Farben darzustellen || kein | ||
− | | | + | |- |
|clMenuHighlight|| Die Hintergrundfarbe des ausgewählten Menüpunkts || kein | |clMenuHighlight|| Die Hintergrundfarbe des ausgewählten Menüpunkts || kein | ||
− | | | + | |- |
|clMenuBar|| Die Hintergrundfarbe der Menüleiste || kein | |clMenuBar|| Die Hintergrundfarbe der Menüleiste || kein | ||
− | | | + | |- |
|clForm|| ? || kein | |clForm|| ? || kein | ||
− | | | + | |- |
|clColorDesktop|| ? || kein | |clColorDesktop|| ? || kein | ||
− | | | + | |- |
|cl3DFace|| ? || kein | |cl3DFace|| ? || kein | ||
− | | | + | |- |
|cl3DShadow|| ? || kein | |cl3DShadow|| ? || kein | ||
− | | | + | |- |
|cl3DHiLight|| ? || kein | |cl3DHiLight|| ? || kein | ||
− | | | + | |- |
|clBtnHiLight|| Das Gleiche wie clBtnHighlight || kein | |clBtnHiLight|| Das Gleiche wie clBtnHighlight || kein | ||
|} | |} | ||
− | |||
− | + | =Zeichnen von Elementen der Unit Themes auf Ihre benutzerdefinierte Steuerelemente= | |
− | Die Unit Themes bietet Funktionen, um einzelne Elemente der Standard-Controls zu erweitern. | + | Die Unit <b>Themes</b> bietet Funktionen, um einzelne Elemente der Standard-Controls zu erweitern. Um zum Beispiel ein Contol wie ein TTreeView zu erweitern verwenden Sie folgenden Code:<br> |
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
uses Themes; | uses Themes; | ||
Line 200: | Line 313: | ||
end; | end; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− |
Latest revision as of 05:54, 11 February 2020
│
Deutsch (de) │
English (en) │
español (es) │
suomi (fi) │
français (fr) │
日本語 (ja) │
русский (ru) │
中文(中国大陆) (zh_CN) │
Überblick
Die Standardfarben sind in der LCL (Komponentenbibliothek) TColor festgelegt. Diese Standardfarben sind mit der VCL (Komponentenbibliothek) TColor von Delphi kompatibel. Der Typ TColor kann eine RGB Farbe (3x8bit), oder eine Systemfarbe wie clDefault anzeigen. Die Komponentenbibliothek arbeitet auch mit dem Typ TFPColor des fpImage Farbsystems zusammen. Der Typ TFPColor stellt die Farben nach RGBA (4x16bit) dar und nicht wie der Typ TColor nach RGB (3x8bit) dar.
Umwandlung der Werte zwischen TColor und RGB
Die Unit Graphics bietet folgende Funktionen:
function Blue(rgb: TColor): BYTE; // arbeitet nicht mit den vordefinierten Systemfarben zusammen
function Green(rgb: TColor): BYTE; // arbeitet nicht mit den vordefinierten Systemfarben zusammen
function Red(rgb: TColor): BYTE; // arbeitet nicht mit den vordefinierten Systemfarben zusammen
function RGBToColor(R, G, B: Byte): TColor;
procedure RedGreenBlue(rgb: TColor; out Red, Green, Blue: Byte); // arbeitet nicht mit den vordefinierten Systemfarben zusammen
function FPColorToTColor(const FPColor: TFPColor): TColor;
function TColorToFPColor(const c: TColor): TFPColor; // arbeitet nicht mit den vordefinierten Systemfarben zusammen
function IsSysColor(AColor: TColorRef): Boolean;
umwandeln des Typs TColor von/in den Typ String
Funktionen die Strings wie "25500 oder "$AA0088" oder "clNavy" nach TColor umwandeln:
- StringToColor
- StringToColorDef
Wandelt den Typ TColor in den Typ String um:
- ColorToString
Tabelle der Standardfarben
Diese vordefinierten Farbkonstanten sind mit den Farbkonstanten in Delphi kompatibel:
Farbkonstante | Farbe | Hexadezimalwert für die Verwendung mit TColor | Beispiel |
---|---|---|---|
clBlack | Black | TColor($000000); | |
clMaroon | Maroon | TColor($000080); | |
clGreen | Green | TColor($008000); | |
clOlive | Olive Green | TColor($008080); | |
clNavy | Navy Blue | TColor($800000); | |
clPurple | Purple | TColor($800080); | |
clTeal | Teal | TColor($808000); | |
clGray | Grey | TColor($808080); | |
clSilver | Silver | TColor($C0C0C0); | |
clRed | Red | TColor($0000FF); | |
clLime | Lime Green | TColor($00FF00); | |
clYellow | Yellow | TColor($00FFFF); | |
clBlue | Blue | TColor($FF0000); | |
clFuchsia | Fuchsia | TColor($FF00FF); | |
clAqua | Aqua | TColor($FFFF00); | |
clLtGray | Light Grey | TColor($C0C0C0); | alias: clSilver |
clDkGray | Dark Grey | TColor($808080); | alias: clGray |
clWhite | White | TColor($FFFFFF); | |
clCream | Cream | TColor($F0FBFF); | Version: Lazarus 1.2 und höher |
clMedGray | Medium Grey | TColor($A4A0A0); | Version: Lazarus 1.2 und höher |
clMoneyGreen | Mint Green | TColor($C0DCC0); | Version: Lazarus 1.2 und höher |
clSkyBlue | Sky Blue | TColor($F0CAA6); | Version: Lazarus 1.2 und höher |
Systemfarben
Beispiel: clInfoBk, clInfoText
Systemfarben sind Farbkonstanten mit einer besonderen Bedeutung. Ihr wirklicher Wert hängt vom Kontext und dem Windowsthema ab. Sie sind keine einfachen Farben.
clInfoBk zum Beispiel:
Form1.Canvas.Brush.Color:=clInfoBk; // verwende den Standardhintergrund Pinsel für ein Hinweisfenster
Form1.Canvas.FillRect(10,10,50,50);
Ein Hinweisfenster unter MS-Windows könnte einen weißen Hintergrund haben. Unter Linux/GTK2 könnte das Hinweisfenster eine metallische Beschaffenheit haben. Wenn Sie nun einen Text in diese Fläche schreiben möchten, dann müssen Sie, wenn Sie den Text lesen möchten die Farbe auf einen Wert wie clInfoText ändern.
Zum Beispiel:
Form1.Canvas.Brush.Color:=clInfoBk; // verwende den Pinsel für die Standardhintergrundfarbe für ein Hinweisfenster
Form1.Canvas.FillRect(10,10,50,50);
Form1.Canvas.Font.Color:=clInfoText; // verwende den Pinsel für die Standardtextfarbe für ein Hinweisfenster
Form1.Canvas.TextOut(10,10,'Hint');
Die Systemfarbe clInfoBk kann nicht für Pen.Color und nicht für Font.Color verwendet werden. Wenn Sie dies tun, dann ist das Ergebnis nicht definiert und hängt vom verwendeten widgetset (= Sammlung von Grafik Bibliotheken) und dem vom Benutzer gewählten Thema (= grafische Darstellung der Betriebssystemoberfläche) ab.
Das gleiche gilt für clInfoText. Es kann nur als Font.Color verwendet werden. eine Verwendung mit Brush.Color wird nicht funktionieren. Im Moment erlauben alle widgetsets die Verwendung mit Pen.Color.
Ändern des Fensterthemas des Betriebssystems
Wenn z. B. der Benutzer das Thema (= grafische Darstellung der Betriebssystemoberfläche) wechselt dann kann das Betriebssystem seine Farben ändern.
clInfoBk kann sich z. B. von weiß nach blau ändern oder von einer Farbe zu einer Textur. Das kann dem Programmierer Probleme bereiten.
Das liegt daran, das sich der Farbwert der vordefinierten Systemfarben im eigenen Programm nicht automatisch anpasst. Der Programmierer muss dafür sorgen, das die Systemfarben den aktuellen Wert erhalten.
Dazu ist ein Zwischenschritt nötig.
Beispiel:
Form1.Canvas.Brush.Color:=clInfoBk; // der Pinsel erhält die aktuellen Systemfarben
Form1.Canvas.FillRect(10,10,50,50); // dies erstellt einen Pinsel mit dem Farbwert
// des Hinweisfensters des aktiven Fensterthemas
...
// Wenn das Thema (= grafische Darstellung der Betriebssystemoberfläche) vom Anwender
// zwischenzeitlich geändert wird, dann hat der Pinsel noch die vorhergehenden Farbwerte
...
Form1.Canvas.FillRect(10,10,50,50); // mit dem Pinsel wird der Farbwert des vorhergehenden Themas gezeichnet
Form1.Canvas.Brush.Color:=clInfoBk; // durch eine erneute Zuweisung wird der
// vorhergehenden Farbwert nicht aktualisiert
Form1.Canvas.FillRect(10,10,50,50); // mit dem Pinsel wird der Farbwert des alten Themas gezeichnet
Form1.Canvas.Brush.Color:=clRed; // eine Zuweisung mit einem neuen Farbwert macht den
// vorhergehenden Farbwert ungültig
Form1.Canvas.Brush.Color:=clInfoBk; // eine Zuweisung mit einem neuen Farbwert macht den
// vorhergehenden Farbwert ungültig
Form1.Canvas.FillRect(10,10,50,50); // jetzt, wird der Farbwert des aktuellen Themas verwendet
Tabelle der Systemfarben
In der folgenden Tabelle werden die Systemfarben und ihre Bedeutung aufgelistet. Werden die Systemfarben ausserhalb des definierten Geltungsbereiches verwendet, dann ist das Ergebnis unvorhersehbar. Die Systemfarben sind immer vom aktuell verwendeten Widget-Set (eine Sammlung von grafischen Bedienelementen) und dem aktuell verwendeten Thema (grafische Darstellung der Betriebssystemoberfläche) abhängig.
Konstante | LCL Definition | Unterstützte Widgetsets |
---|---|---|
clNone | Der Farbwert ist nicht definiert. D. h. er hat keine Auswirkungen bzw. er kann im Einzelfall einen weißen Farbwert haben. | alle |
clDefault | Verwendet die vorgesehene Standardfarbe | alle |
clScrollBar | Scrollbar Körper | alle |
clBackground | ? | alle |
clActiveCaption | Titelleiste des aktiven Fensters | kein |
clInactiveCaption | Titelleiste des inaktiven Fensters | kein |
clMenu | Regular menu item background color | kein |
clWindow | The normal background brush of unselected text. Defined for controls like TEdit, TComboBox, TMemo, TListBox, TTreeView. | kein |
clWindowFrame | Farbe der Rahmen um das Fenster | kein |
clMenuText | Die Schriftfarbe ist zusammen mit clMenu zu verwenden | kein |
clWindowText | Die Schriftfarbe ist zusammen mit clWindow zu verwenden | kein |
clCaptionText | Textfarbe das aktiven Fensters | kein |
clActiveBorder | ? | kein |
clInactiveBorder | ? | kein |
clAppWorkspace | MDIMain form background | kein |
clHighlight | Die Pinselfarbe des ausgewählten Elements | kein |
clHighlightText | Schriftfarbe vom ausgewählten Text (zusammen mit clHighligh). | kein |
clBtnFace | Button Hintergrund | kein |
clBtnShadow | Farbe des Button Schattens wird verwendet, um 3D-Effekt zu erzielen | kein |
clGrayText | Die Schriftfarbe von einem deaktiverten Element | kein |
clBtnText | Button Schriftfarbe zu verwenden mit clBtnFace | kein |
clInactiveCaptionText | Textfarbe der inaktiven Fenstertitelleiste | kein |
clBtnHighlight | Button Farbhervorhebung wird verwendet, um 3D-Effekt zu erzielen | kein |
cl3DDkShadow | ? | kein |
cl3DLight | ? | kein |
clInfoText | Schriftfarbe für Hinweise. Ist zu verwenden mit clInfoBk | alle |
clInfoBk | Pinselfarbe für Hinweisse. Ist zu verwenden mit clInfoText | alle |
clHotLight | ? | kein |
clGradientActiveCaption | Die zweit Farbe um die aktive Fenstertitelleiste mit verlaufenden Farben darzustellen | kein |
clGradientInactiveCaption | Die zweit Farbe um die inaktive Fenstertitelleiste mit verlaufenden Farben darzustellen | kein |
clMenuHighlight | Die Hintergrundfarbe des ausgewählten Menüpunkts | kein |
clMenuBar | Die Hintergrundfarbe der Menüleiste | kein |
clForm | ? | kein |
clColorDesktop | ? | kein |
cl3DFace | ? | kein |
cl3DShadow | ? | kein |
cl3DHiLight | ? | kein |
clBtnHiLight | Das Gleiche wie clBtnHighlight | kein |
Zeichnen von Elementen der Unit Themes auf Ihre benutzerdefinierte Steuerelemente
Die Unit Themes bietet Funktionen, um einzelne Elemente der Standard-Controls zu erweitern. Um zum Beispiel ein Contol wie ein TTreeView zu erweitern verwenden Sie folgenden Code:
uses Themes;
...
procedure TYourCustomControl.Paint;
const
PlusMinusDetail: array[Boolean {Hot}, Boolean {Expanded}] of TThemedTreeview =
(
(ttGlyphClosed, ttGlyphOpened),
(ttHotGlyphClosed, ttHotGlyphOpened)
);
var
Details: TThemedElementDetails;
R: TRect;
Collapse: boolean;
begin
...
// zeichnet eine Erweiterung
Details := ThemeServices.GetElementDetails(PlusMinusDetail[False, Collapse]);
R := Rect(ALeft, ATop, ARight + 1, ABottom + 1);
ThemeServices.DrawElement(Canvas.Handle, Details, R, nil);
...
end;