Диалог выбора цвета — компонент ColorDialog

Компонент ColorDialog вызывает диалоговое окно выбора цвета, представленное на рис. 8. В нем пользователь может выбрать цвет из базовой палитры или, нажав кнопку Определить цвет, раскрыть дополнительную панель (на рис. 8 она раскрыта), позволяющую синтезировать цвет, отличный от базовых. Синтезированный цвет можно добавить кнопкой «Добавить в набор» в палитру дополнительных цветов.

Рис. 8Диалоговое окно выбора цвета

Основное свойство компонента ColorDialog — Color. Это свойство соответствует тому цвету, который выбрал в диалоге пользователь. Если при вызове диалога желательно установить некоторое начальное приближение цвета, это можно сделать, установив Color предварительно во время проектирования или программно. Свойство CustomColors типа TStrings позволяет задать заказные цвета дополнительной палитры. Каждый цвет определяется строкой вида

<Имя цвета>=<шестнадцатиричное представление цвета>;

Имена цветов задаются от ColorA (первый цвет) до ColorP (шестнадцатый, последний). Например, строка

ColorA=808022

задает первый заказной цвет. При задании цвета 2 младших разряда описывают интенсивность красного цвета, следующие 2 — зеленого, старшие — синего.

Свойство Options содержит множество следующих опций:

cdFullOpen Отображать сразу при открытии диалогового окна панель определения заказных цветов
cdPreventFullOpen Запретить появление в диалоговом окне кнопки Определить цвет, так что пользователь не сможет определять новые цвета
cdShowHelp Добавить в диалоговое окно кнопку Справка
cdSolidColor Указать Windows использовать сплошной цвет, ближайший к выбранному (это обедняет палитру)
cdAnyColor Разрешать пользователю выбирать любые не сплошные цвета (такие цвета могут быть не ровными)

По умолчанию все опции выключены.

Приведем пример применения компонента ColorDialog. Если вы хотите, чтобы пользователь мог задать цвет какого-то объекта, например, цвет фона компонента Memo1, то это можно реализовать оператором

 

if ColorDialog1.Execute then Memo1.Color := ColorDialog1.Color;