Sign in Join
Wiki copytemporary

Colors/fr: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Colors/fr

OldNewLine
1+# Vue d'ensemble
2+
3+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**).
4+
5+## Conversions entre **TColor** et une valeur RGB
6+
7+L'unité **Graphics** fournit les fonctions suivantes :
8+
9+``` pascal
10+function Blue(rgb: TColor): BYTE; // ne fonctionne pas avec les couleurs système
11+function Green(rgb: TColor): BYTE; // ne fonctionne pas avec les couleurs système
12+function Red(rgb: TColor): BYTE; // ne fonctionne pas avec les couleurs système
13+function RGBToColor(R, G, B: Byte): TColor;
14+procedure RedGreenBlue(rgb: TColor; out Red, Green, Blue: Byte); // ne fonctionne pas avec les couleurs système
15+function FPColorToTColor(const FPColor: TFPColor): TColor;
16+function TColorToFPColor(const c: TColor): TFPColor; // ne fonctionne pas avec les couleurs système
17+function IsSysColor(AColor: TColorRef): Boolean;
18+```
19+
20+## Conversion entre **TColor** et une chaîne de caractères
21+
22+Fonctions pour convertir des chaînes comme "25500" ou "\$AA0088" ou "clNavy" vers le type **TColor**:
23+
24+- StringToColor
25+- StringToColorDef
26+
27+Pour convertir **TColor** vers une chaîne qui peut être adaptée à la langue de travail:
28+
29+- ColorToString
30+
31+# Table des couleurs standard
32+
33+Environ une vingtaine de constantes de couleur prédéfinies sont fournies. Elles sont compatibles avec Delphi:
34+
35+| Constante de couleur | Signification | Valeur hexadécimale pour emploi avec **TColor** | Exemple |
36+|----|----|----|----|
37+| clBlack | Noir | TColor(\$000000); | |
38+| clMaroon | Marron | TColor(\$000080); | |
39+| clGreen | Vert | TColor(\$008000); | |
40+| clOlive | Vert Olive | TColor(\$008080); | |
41+| clNavy | Bleu marine | TColor(\$800000); | |
42+| clPurple | Violet | TColor(\$800080); | |
43+| clTeal | Bleu canard | TColor(\$808000); | |
44+| clGray | Gris | TColor(\$808080); | |
45+| clSilver | Argent | TColor(\$C0C0C0); | |
46+| clRed | Rouge | TColor(\$0000FF); | |
47+| clLime | Vert Citron | TColor(\$00FF00); | |
48+| clYellow | Jaune | TColor(\$00FFFF); | |
49+| clBlue | Bleu | TColor(\$FF0000); | |
50+| clFuchsia | Fuchsia | TColor(\$FF00FF); | |
51+| clAqua | Bleu vert | TColor(\$FFFF00); | |
52+| clLtGray | Gris clair | TColor(\$C0C0C0); | alias de clSilver |
53+| clDkGray | Gris foncé | TColor(\$808080); | alias de clGray |
54+| clWhite | Blanc | TColor(\$FFFFFF); | |
55+| clCream | Crème | TColor(\$F0FBFF); | |
56+| clMedGray | Gris Moyen | TColor(\$A4A0A0); | |
57+| clMoneyGreen | Vert menthe | TColor(\$C0DCC0); | |
58+| clSkyBlue | Bleu ciel | TColor(\$F0CAA6); | |
59+
60+# Couleurs système
61+
62+## Exemples : clInfoBk, clInfoText
63+
64+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**:
65+
66+``` pascal
67+Form1.Canvas.Brush.Color:=clInfoBk; // use the default background brush of a hint window
68+Form1.Canvas.FillRect(10,10,50,50);
69+```
70+
71+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:
72+
73+``` pascal
74+Form1.Canvas.Brush.Color:=clInfoBk; // utilise le fond par défaut d'une bulle d'aide
75+Form1.Canvas.FillRect(10,10,50,50);
76+Form1.Canvas.Font.Color:=clInfoText; // utilise la couleur du ttexte par défaut d'une bulle d'aide
77+Form1.Canvas.TextOut(10,10,'Hint');
78+```
79+
80+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.
81+
82+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.
83+
84+## Changements de thème
85+
86+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:
87+
88+``` pascal
89+Form1.Canvas.Brush.Color:=clInfoBk; // Cela ne créera pas une nouveau handle de brosse
90+Form1.Canvas.FillRect(10,10,50,50); // Cela va le créer avec la brosse du thème actif pour les bulles d'aide
91+...
92+// Si le thème change maintenant, le Brush.Handle est toujours alloué avec les anciennes valeurs
93+...
94+Form1.Canvas.FillRect(10,10,50,50); // cela va peindre avec la brosse de l'ancien thème
95+Form1.Canvas.Brush.Color:=clInfoBk; // affecter l'ancienne valeur ne créera pas un nouveau handle de brosse
96+Form1.Canvas.FillRect(10,10,50,50); // cela va peindre avec la brosse de l'ancien thème
97+Form1.Canvas.Brush.Color:=clRed; // affectant une nouvelle couleur, l'ancien handle est invalide
98+Form1.Canvas.Brush.Color:=clInfoBk; // affectant une nouvelle couleur, l'ancien handle est invalide
99+Form1.Canvas.FillRect(10,10,50,50); // cela créera un nouveau handle et peindra avec le nouveau thème
100+```
101+
102+## Table des couleurs système
103+
104+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**.
105+
106+<table>
107+<thead>
108+<tr>
109+<th><p>Constante</p></th>
110+<th><p>Définition LCL</p></th>
111+<th><p>Notes Delphi</p></th>
112+<th><p>Widgetset supporté</p></th>
113+</tr>
114+</thead>
115+<tbody>
116+<tr>
117+<td><p>clNone</p></td>
118+<td><p>Indique "ne pas peindre". L'employer comme couleur de contrôle est indéfini. Le contrôle ne deviendra pas transparent.</p></td>
119+<td><p>-</p></td>
120+<td><p>Tous</p></td>
121+</tr>
122+<tr>
123+<td><p>clDefault</p></td>
124+<td><p>L'employer pour une brosse revient à employer la couleur de fond normal pour le contexte de périphérique cible.</p>
125+<ul>
126+<li>Sur le canevas d'une fiche, un <em>FillRect</em> peindra une surface rectangulaire remplie avec le fond normal d'une fenêtre standard. Cela quelque puissent définir le widgetset et le thème. Cela peut être la couleur grise, un dégradé ou une image.</li>
127+<li>Sur le canevas d'une TListBox, cela peindra avec le fond normal, qui est souvent blanc dans Windows. Ainsi, pour une TListBox, clDefault est identique à clWindow.</li>
128+<li>L'utiliser comme couleur de crayon utilisera la couleur de ligne par défaut pour le contexte de périphérique.</li>
129+<li>L'utiliser comme couleur de fonte utilisera la couleur de texte par défaut pour le contexte de périphérique.</li>
130+</ul></td>
131+<td><p>| -</p></td>
132+<td><p>Tous</p></td>
133+</tr>
134+<tr>
135+<td><p>clScrollBar</p></td>
136+<td><p>Couleur du corps de barre de défilement</p></td>
137+<td><p>-</p></td>
138+<td><p>Tous</p></td>
139+</tr>
140+<tr>
141+<td><p>clBackground</p></td>
142+<td><p>?</p></td>
143+<td><p>-</p></td>
144+<td><p>Tous</p></td>
145+</tr>
146+<tr>
147+<td><p>clActiveCaption</p></td>
148+<td><p>Barre de titre de la fenêtre active</p></td>
149+<td><p>-</p></td>
150+<td><p>Aucun</p></td>
151+</tr>
152+<tr>
153+<td><p>clInactiveCaption</p></td>
154+<td><p>Barre de titre de fenêtre inactive</p></td>
155+<td><p>-</p></td>
156+<td><p>Aucun</p></td>
157+</tr>
158+<tr>
159+<td><p>clMenu</p></td>
160+<td><p>Couleur de fond d'article de menu ordinaire</p></td>
161+<td><p>-</p></td>
162+<td><p>Aucun</p></td>
163+</tr>
164+<tr>
165+<td><p>clWindow</p></td>
166+<td><p>La brosse de fond normal d'un texte non sélectionné. Défini pour des contrôles comme TEdit, TComboBox, TMemo, TListBox, TTreeView.</p></td>
167+<td><p>-</p></td>
168+<td><p>Aucun</p></td>
169+</tr>
170+<tr>
171+<td><p>clWindowFrame</p></td>
172+<td><p>Couleur du cadre autour de la fenêtre</p></td>
173+<td><p>-</p></td>
174+<td><p>Aucun</p></td>
175+</tr>
176+<tr>
177+<td><p>clMenuText</p></td>
178+<td><p>Couleur de police pour les menus à employer avec clMenu</p></td>
179+<td><p>-</p></td>
180+<td><p>Aucun</p></td>
181+</tr>
182+<tr>
183+<td><p>clWindowText</p></td>
184+<td><p>Couleur de police d'un texte non sélectionné à employer avec clWindow</p></td>
185+<td><p>-</p></td>
186+<td><p>Aucun</p></td>
187+</tr>
188+<tr>
189+<td><p>clCaptionText</p></td>
190+<td><p>Couleur de texte de la barre de titre de la fenêtre active</p></td>
191+<td><p>-</p></td>
192+<td><p>Aucun</p></td>
193+</tr>
194+<tr>
195+<td><p>clActiveBorder</p></td>
196+<td><p>?</p></td>
197+<td><p>-</p></td>
198+<td><p>Aucun</p></td>
199+</tr>
200+<tr>
201+<td><p>clInactiveBorder</p></td>
202+<td><p>?</p></td>
203+<td><p>-</p></td>
204+<td><p>Aucun</p></td>
205+</tr>
206+<tr>
207+<td><p>clAppWorkspace</p></td>
208+<td><p>Fond de la fenêtre principale en MDI</p></td>
209+<td><p>-</p></td>
210+<td><p>Aucun</p></td>
211+</tr>
212+<tr>
213+<td><p>clHighlight</p></td>
214+<td><p>La couleur de brosse d'un élement sélectionné</p></td>
215+<td><p>-</p></td>
216+<td><p>Aucun</p></td>
217+</tr>
218+<tr>
219+<td><p>clHighlightText</p></td>
220+<td><p>Couleur de police de texte sélectionné (à employer avec clHighligh).</p></td>
221+<td><p>-</p></td>
222+<td><p>Aucun</p></td>
223+</tr>
224+<tr>
225+<td><p>clBtnFace</p></td>
226+<td><p>Fond de bouton</p></td>
227+<td><p>-</p></td>
228+<td><p>Aucun</p></td>
229+</tr>
230+<tr>
231+<td><p>clBtnShadow</p></td>
232+<td><p>Couleur de l'ombre d'un bouton (en bas à droite) utilisé pour réaliser un effet 3D</p></td>
233+<td><p>-</p></td>
234+<td><p>Aucun</p></td>
235+</tr>
236+<tr>
237+<td><p>clGrayText</p></td>
238+<td><p>Couleur de police d'un élément désactivé</p></td>
239+<td><p>-</p></td>
240+<td><p>Aucun</p></td>
241+</tr>
242+<tr>
243+<td><p>clBtnText</p></td>
244+<td><p>Couleur de police de bouton à utiliser avec clBtnFace</p></td>
245+<td><p>-</p></td>
246+<td><p>Aucun</p></td>
247+</tr>
248+<tr>
249+<td><p>clInactiveCaptionText</p></td>
250+<td><p>Couleur de texte du titre d'une fenêtre inactive</p></td>
251+<td><p>-</p></td>
252+<td><p>Aucun</p></td>
253+</tr>
254+<tr>
255+<td><p>clBtnHighlight</p></td>
256+<td><p>Couleur de surlignement de bouton (en haut à gauche) utilisé pour réaliser un effet 3D</p></td>
257+<td><p>-</p></td>
258+<td><p>Aucun</p></td>
259+</tr>
260+<tr>
261+<td><p>cl3DDkShadow</p></td>
262+<td><p>?</p></td>
263+<td><p>-</p></td>
264+<td><p>Aucun</p></td>
265+</tr>
266+<tr>
267+<td><p>cl3DLight</p></td>
268+<td><p>?</p></td>
269+<td><p>-</p></td>
270+<td><p>Aucun</p></td>
271+</tr>
272+<tr>
273+<td><p>clInfoText</p></td>
274+<td><p>Couleur de police pour les bulles d'aide. A employer avec clInfoBk</p></td>
275+<td><p>-</p></td>
276+<td><p>Tous</p></td>
277+</tr>
278+<tr>
279+<td><p>clInfoBk</p></td>
280+<td><p>Couleur de police pour les bulles d'aide. A employer avec clInfoText</p></td>
281+<td><p>-</p></td>
282+<td><p>Tous</p></td>
283+</tr>
284+<tr>
285+<td><p>clHotLight</p></td>
286+<td><p>?</p></td>
287+<td><p>-</p></td>
288+<td><p>Aucun</p></td>
289+</tr>
290+<tr>
291+<td><p>clGradientActiveCaption</p></td>
292+<td><p>La seconde couleur utilisée pour faire le dégradé de la barre de titre de la fenêtre active</p></td>
293+<td><p>-</p></td>
294+<td><p>Aucun</p></td>
295+</tr>
296+<tr>
297+<td><p>clGradientInactiveCaption</p></td>
298+<td><p>La seconde couleur utilisée pour faire le dégradé de la barre de titre de fenêtre inactive</p></td>
299+<td><p>-</p></td>
300+<td><p>Aucun</p></td>
301+</tr>
302+<tr>
303+<td><p>clMenuHighlight</p></td>
304+<td><p>La couleur de fond d'un article de menu sélectionné</p></td>
305+<td><p>-</p></td>
306+<td><p>Aucun</p></td>
307+</tr>
308+<tr>
309+<td><p>clMenuBar</p></td>
310+<td><p>Couleur de fond d'une barre de menu</p></td>
311+<td><p>-</p></td>
312+<td><p>Aucun</p></td>
313+</tr>
314+<tr>
315+<td><p>clForm</p></td>
316+<td><p>?</p></td>
317+<td><p>-</p></td>
318+<td><p>Aucun</p></td>
319+</tr>
320+<tr>
321+<td><p>clColorDesktop</p></td>
322+<td><p>?</p></td>
323+<td><p>-</p></td>
324+<td><p>Aucun</p></td>
325+</tr>
326+<tr>
327+<td><p>cl3DFace</p></td>
328+<td><p>?</p></td>
329+<td><p>-</p></td>
330+<td><p>Aucun</p></td>
331+</tr>
332+<tr>
333+<td><p>cl3DShadow</p></td>
334+<td><p>?</p></td>
335+<td><p>-</p></td>
336+<td><p>Aucun</p></td>
337+</tr>
338+<tr>
339+<td><p>cl3DHiLight</p></td>
340+<td><p>?</p></td>
341+<td><p>-</p></td>
342+<td><p>Aucun</p></td>
343+</tr>
344+<tr>
345+<td><p>clBtnHiLight</p></td>
346+<td><p>Comme clBtnHighlight</p></td>
347+<td><p>-</p></td>
348+<td><p>Aucun</p></td>
349+</tr>
350+</tbody>
351+</table>
352+
353+# Dessin d'élément de thème sur vos contrôles personnalisés
354+
355+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 :
356+
357+``` pascal
358+uses Themes;
359+
360+...
361+
362+procedure TYourCustomControl.Paint;
363+const
364+ PlusMinusDetail: array[Boolean {Hot}, Boolean {Expanded}] of TThemedTreeview =
365+ (
366+ (ttGlyphClosed, ttGlyphOpened),
367+ (ttHotGlyphClosed, ttHotGlyphOpened)
368+ );
369+var
370+ Details: TThemedElementDetails;
371+ R: TRect;
372+ Collapse: boolean;
373+begin
374+ ...
375+ //dessine un signe d'expansion selon le thème.
376+ Details := ThemeServices.GetElementDetails(PlusMinusDetail[False, Collapse]);
377+ R := Rect(ALeft, ATop, ARight + 1, ABottom + 1);
378+ ThemeServices.DrawElement(Canvas.Handle, Details, R, nil);
379+ ...
380+end;
381+```
382+
383+---
384+*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](/wiki-contact).*

Back to history