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

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

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

Основное свойство компонента 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;

к началу страницы