Sign in Join
Wiki copytemporary

Colors/fr

Deutsch · English · Español · Français · Suomi · Русский · 中文(中国) · 日本語

Vue d'ensemble

Dans la LCL, TColor est le type couleur standard. Il est compatible avec le TColor de Delphi. TColor peut représenter soit une valeur RGB (3x8bits), soit une couleur système comme crDefault. La LCL peut aussi travailler avec le système fpImage qui emploie le type TFPColor qui est du RGBA (4x16bits), et non du RGB (3x8bits comme TColor).

Conversions entre TColor et une valeur RGB

L'unité Graphics fournit les fonctions suivantes :

pascal
function Blue(rgb: TColor): BYTE; // ne fonctionne pas avec les couleurs système
function Green(rgb: TColor): BYTE; // ne fonctionne pas avec les couleurs système
function Red(rgb: TColor): BYTE; // ne fonctionne pas avec les couleurs système
function RGBToColor(R, G, B: Byte): TColor;
procedure RedGreenBlue(rgb: TColor; out Red, Green, Blue: Byte); // ne fonctionne pas avec les couleurs système
function FPColorToTColor(const FPColor: TFPColor): TColor;
function TColorToFPColor(const c: TColor): TFPColor; // ne fonctionne pas avec les couleurs système
function IsSysColor(AColor: TColorRef): Boolean;

Conversion entre TColor et une chaîne de caractères

Fonctions pour convertir des chaînes comme "25500" ou "$AA0088" ou "clNavy" vers le type TColor:

Pour convertir TColor vers une chaîne qui peut être adaptée à la langue de travail:

Table des couleurs standard

Environ une vingtaine de constantes de couleur prédéfinies sont fournies. Elles sont compatibles avec Delphi:

Constante de couleur Signification Valeur hexadécimale pour emploi avec TColor Exemple
clBlack Noir TColor($000000);
clMaroon Marron TColor($000080);
clGreen Vert TColor($008000);
clOlive Vert Olive TColor($008080);
clNavy Bleu marine TColor($800000);
clPurple Violet TColor($800080);
clTeal Bleu canard TColor($808000);
clGray Gris TColor($808080);
clSilver Argent TColor($C0C0C0);
clRed Rouge TColor($0000FF);
clLime Vert Citron TColor($00FF00);
clYellow Jaune TColor($00FFFF);
clBlue Bleu TColor($FF0000);
clFuchsia Fuchsia TColor($FF00FF);
clAqua Bleu vert TColor($FFFF00);
clLtGray Gris clair TColor($C0C0C0); alias de clSilver
clDkGray Gris foncé TColor($808080); alias de clGray
clWhite Blanc TColor($FFFFFF);
clCream Crème TColor($F0FBFF);
clMedGray Gris Moyen TColor($A4A0A0);
clMoneyGreen Vert menthe TColor($C0DCC0);
clSkyBlue Bleu ciel TColor($F0CAA6);

Couleurs système

Exemples : clInfoBk, clInfoText

Les couleurs système sont des constantes avec une signification particulière. Leur valeur réelle dépend du contexte et du thème. Ce ne sont pas de simples couleurs. Par exemple clInfoBk:

pascal
Form1.Canvas.Brush.Color:=clInfoBk;  // use the default background brush of a hint window
Form1.Canvas.FillRect(10,10,50,50);

Une bulle d'aide dans MS Windows ayant un fond blanc, le code ci-dessus va dessiner en blanc. Dans Linux/gtk2, ce code pouvant correspondre à une texture métallique, le code va dessiner la texture. Si vous voulez placer du texte dessus, vous avez besoin d'une couleur correspondante comme clInfoText, sinon votre texte sera illisible pour l'utilisateur. Par exemple:

pascal
Form1.Canvas.Brush.Color:=clInfoBk;  // utilise le fond par défaut d'une bulle d'aide
Form1.Canvas.FillRect(10,10,50,50);
Form1.Canvas.Font.Color:=clInfoText;  // utilise la couleur du ttexte par défaut d'une bulle d'aide
Form1.Canvas.TextOut(10,10,'Hint');

La couleur système clInfoBk ne peut pas être utilisée avec Pen.Color ni pour Font.Color. Si vous faites ainsi, le résultat est indéfini et dépend du widgetset et du thème de l'utilisateur.

Idem pour clInfoText: il ne peut être utilisé que comme une Font.Color. L'utiliser comme Brush.Color peut ne pas convenir. Actuellement, tous les widgetsets permettent de l'utiliser comme Pen.Color aussi.

Changements de thème

Quand l'utilisateur bascule le thème, les couleurs système changent. Une clInfoBk peut passer du blanc au vert ou d'une couleur à une texture. Ce changement surgira quand vous allouerez une nouveau handle de brosse. Gardez à l'esprit que la simple affectation Brush.Color:=clInfoBk n'alloue pas un handle de brosse. Le handle est alloué à l'utilisation. Par exemple:

pascal
Form1.Canvas.Brush.Color:=clInfoBk; // Cela ne créera pas une nouveau handle de brosse
Form1.Canvas.FillRect(10,10,50,50); // Cela va le créer avec la brosse du thème actif pour les bulles d'aide
...
// Si le thème change maintenant, le Brush.Handle est toujours alloué avec les anciennes valeurs
...
Form1.Canvas.FillRect(10,10,50,50); // cela va peindre avec la brosse de l'ancien thème
Form1.Canvas.Brush.Color:=clInfoBk; // affecter l'ancienne valeur ne créera pas un nouveau handle de brosse
Form1.Canvas.FillRect(10,10,50,50); // cela va peindre avec la brosse de l'ancien thème
Form1.Canvas.Brush.Color:=clRed;    // affectant une nouvelle couleur, l'ancien handle est invalide
Form1.Canvas.Brush.Color:=clInfoBk; // affectant une nouvelle couleur, l'ancien handle est invalide
Form1.Canvas.FillRect(10,10,50,50); // cela créera un nouveau handle et peindra avec le nouveau thème

Table des couleurs système

La table suivante liste les couleurs système et leur sens. Les employer en dehors du champ de leur définition est indéfini et le résultat dépend du widgetset et du thème. Par exemple, clDefault est la brosse du fond normale du contexte de périphérique utilisé. Si vous voulez peindre des éléments de boutons sur vos contrôles personnalisés, employez les fonctions de dessin de l'unité Themes.

Constante

Définition LCL

Notes Delphi

Widgetset supporté

clNone

Indique "ne pas peindre". L'employer comme couleur de contrôle est indéfini. Le contrôle ne deviendra pas transparent.

-

Tous

clDefault

L'employer pour une brosse revient à employer la couleur de fond normal pour le contexte de périphérique cible.

| -

Tous

clScrollBar

Couleur du corps de barre de défilement

-

Tous

clBackground

?

-

Tous

clActiveCaption

Barre de titre de la fenêtre active

-

Aucun

clInactiveCaption

Barre de titre de fenêtre inactive

-

Aucun

clMenu

Couleur de fond d'article de menu ordinaire

-

Aucun

clWindow

La brosse de fond normal d'un texte non sélectionné. Défini pour des contrôles comme TEdit, TComboBox, TMemo, TListBox, TTreeView.

-

Aucun

clWindowFrame

Couleur du cadre autour de la fenêtre

-

Aucun

clMenuText

Couleur de police pour les menus à employer avec clMenu

-

Aucun

clWindowText

Couleur de police d'un texte non sélectionné à employer avec clWindow

-

Aucun

clCaptionText

Couleur de texte de la barre de titre de la fenêtre active

-

Aucun

clActiveBorder

?

-

Aucun

clInactiveBorder

?

-

Aucun

clAppWorkspace

Fond de la fenêtre principale en MDI

-

Aucun

clHighlight

La couleur de brosse d'un élement sélectionné

-

Aucun

clHighlightText

Couleur de police de texte sélectionné (à employer avec clHighligh).

-

Aucun

clBtnFace

Fond de bouton

-

Aucun

clBtnShadow

Couleur de l'ombre d'un bouton (en bas à droite) utilisé pour réaliser un effet 3D

-

Aucun

clGrayText

Couleur de police d'un élément désactivé

-

Aucun

clBtnText

Couleur de police de bouton à utiliser avec clBtnFace

-

Aucun

clInactiveCaptionText

Couleur de texte du titre d'une fenêtre inactive

-

Aucun

clBtnHighlight

Couleur de surlignement de bouton (en haut à gauche) utilisé pour réaliser un effet 3D

-

Aucun

cl3DDkShadow

?

-

Aucun

cl3DLight

?

-

Aucun

clInfoText

Couleur de police pour les bulles d'aide. A employer avec clInfoBk

-

Tous

clInfoBk

Couleur de police pour les bulles d'aide. A employer avec clInfoText

-

Tous

clHotLight

?

-

Aucun

clGradientActiveCaption

La seconde couleur utilisée pour faire le dégradé de la barre de titre de la fenêtre active

-

Aucun

clGradientInactiveCaption

La seconde couleur utilisée pour faire le dégradé de la barre de titre de fenêtre inactive

-

Aucun

clMenuHighlight

La couleur de fond d'un article de menu sélectionné

-

Aucun

clMenuBar

Couleur de fond d'une barre de menu

-

Aucun

clForm

?

-

Aucun

clColorDesktop

?

-

Aucun

cl3DFace

?

-

Aucun

cl3DShadow

?

-

Aucun

cl3DHiLight

?

-

Aucun

clBtnHiLight

Comme clBtnHighlight

-

Aucun

Dessin d'élément de thème sur vos contrôles personnalisés

L'unité Themes fournit des fonctions pour dessiner des éléments particuliers de contrôles standard. Par exemple, pour dessiner un signe d'expansion comme un TTreeView on utilise :

pascal
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
  ...
  //dessine un signe d'expansion selon le thème.
  Details := ThemeServices.GetElementDetails(PlusMinusDetail[False, Collapse]);
  R := Rect(ALeft, ATop, ARight + 1, ABottom + 1);
  ThemeServices.DrawElement(Canvas.Handle, Details, R, nil);
  ...
end;

From the Free Pascal wiki, page "Colors/fr", as it stood on 2020-02-11 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 2, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.