Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РАБ_C++BUILDER.doc
Скачиваний:
99
Добавлен:
02.06.2015
Размер:
7.07 Mб
Скачать

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

  1. Начните новое приложение, перенесите на форму компоненты ColorDialog1, MainMenu1 и Memo1. В свойство Caption формы впишите ДИАЛОГ COLORDIALOG.

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

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

  1. Сконструируйте меню с командой Цвет, в обработчик которой впишите оператор задания цвета фона компонента Memo1:

if(ColorDialog1->Execute())

Memo1->Color = ColorDialog1->Color;

Установите произвольное значение свойства Color, запустите приложение на выполнение. После ввода команды Цвет появится диалоговое окно выбора цвета, в котором нажмите OK. Цвет фона Memo1 совпадет с установленным в свойстве Color цветом.

  1. Свойство CustomColors типа TStrings позволяет задать заказные цвета дополнительной палитры или прочитать заказной цвет, сформированный пользователем в диалоге. Каждый цвет определяется строкой вида

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

Имена цветов задаются от ColorA (первый цвет) до ColorP (шестнадцатый, последний). Значение цвета задается в виде 4-байтового шестнадцатерич-ного числа, три младших разряда которого представляют собой интенсивности красного, зеленого и синего цветов в формате RGB. Например, значение 0x00FF0000 соответствует чистому синему цвету, 0x0000FF00 – чистому зеленому, 0x000000FF – чистому красному. 0x00000000 – черный цвет, 0x00FFFFFF – белый. Если старший байт равен нулю (00), то берется ближайший к заданному цвет из системной палитры. Если старший байт равен единице (01), то берется ближайший к заданному цвет из текущей палитры. Если старший байт равен двум (02), то берется ближайший к заданному цвет из логической палитры контекста данного устройства.

Нажав кнопку с многоточием в свойстве CustomColors, вызовите редактор строки списка, в окно которого поместите строки

ColorA=0000FF

ColorD=00FF00

ColorP=FF0000

ColorF=808022

и нажмите кнопку OK. Запустите приложение на выполнение. По команде Цвет появится окно выбора цвета с четырьмя дополнительными цветами. Выбранный цвет задаст цвет фона Memo1. Убедитесь в этом.

  1. Выполняйте приложение, задавая в окне Цвет основные и дополнительные цвета.

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

cdFullOpen

Отображать сразу при открытии диалогового окна панели определения заказных цветов

cdPreventFullOpen

Запретить появление в диалоговом окне кнопки Определить цвет, так что пользователь не сможет определять новые цвета

cdShowHelp

Добавить в диалоговое окно кнопку Справка

cdSolidColor

Указать Windows использовать сплошной цвет, ближайший к выбранному (это обедняет палитру)

cdAnyColor

Разрешить пользователю выбирать любые не сплошные цвета (такие цвета могут быть не ровными)

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

Рассмотренный компонент ColorDialog вызывает стандартный диалог Windows, возможности которого зачастую избыточны. Пользователю удобнее выбирать цвет с помощью выпадающего списка. Такую возможность предоставляет компонент ColorBox (страница Дополнительно).

  1. Перенесите на форму компонент ColorBox и ознакомьтесь с его свойствами.

Свойство Style является множеством, элементы которого определяют, какие именно категории цвета представлены в списке. Элементы множества означают следующее:

cbStandardColors

16 стандартных цветов типа clRed, clBlack и т.п.

cbExtendedColors

Набор дополнительных цветов clMoneyGreen, clSkyBlue, clCream, clMedGray

cbSystemColors

Системные цвета, установленные в Windows

cbIncludeNone

Список включает в себя строку «clNone». Какой именно цвет будет отображаться в квадратике этой строки, определяется свойством NoneColorColor компонента Color-Box, а истинный цвет определяется компонентом, воспринимающим этот цвет. Эта опция влияет только при включенной опции cbSystemColors

cbIncludeDefault

Список включает в себя строку «clDefault» – цвет по умолчанию. Какой именно цвет будет отображаться в квадратике этой строки, определяется свойством DefaultColorColor компонента ColorBox, а истинный цвет определяется компонентом, воспринимающим этот цвет. Эта опция влияет только при включенной опции cbSystemColors

cbCustomColor

Первой строкой в списке появляется «Custom…». При выборе пользователем этой строки открывается диалоговое окно выбора цвета, в котором пользователь может определить заказной (нестандартный) цвет

cbPrettyNames

Строки в списке обозначают цвета, а не их имена: например, «Black», а не «clBlack»

Как видно из приведенной таблицы, в список, помимо различных цветов, могут включаться строки «clDefault» – цвет компонента по умолчанию, и «clNone» – цвет, зависящий от версии Windows – белый для Windows 98 и черный для Windows 2000/XP/NT. Если присвоить цвет clDefault какому-то компоненту, то компонент будет рисоваться цветом, который заложен в него по умолчанию. Аналогично, присваивание clNone тоже приведет к тому, что истинный цвет будет определяться самим компонентом.

Свойство DefaultColorColor определяет, квадратиком какого цвета будет помечена в списке строка «clDefault». Свойство NoneColorColor определяет, квадратиком какого цвета будет помечена в списке строка «clNone». В действительности же присваиваемые цвета будут определяться теми компонентами, в которые они передаются.

Узнать цвет, выбранный пользователем в списке, позволяет свойство Selected. Для этого используют событие OnSelect, наступающее в момент выбора пользователем цвета. Оператор

Memo1->Color = ColorBox1->Selected;

помещенный в обработчик этого события, задаст фону окна Memo1 цвет, выбранный пользователем.

Свойство только времени выполнения Colors является индексированным массивом цветов в списке (индексы начинаются с нуля). Свойство ColorNames – аналогичный массив строк с именами цветов.

Большинство остальных свойств, методов, событий компонента ColorBox подобны компоненту ComboBox. В частности, список всех строк содержится в свойстве Items типа TStrings. Индекс строки цвета, которая будет показана пользователю в момент начала выполнения приложения, определяется свойством только времени выполнения ItemIndex. Чтобы в первый момент показать пользователю определенный цвет, в обработчике события формы OnCreate определяют ItemIndex с помощью метода IndexOf. Например, следующий оператор в первый момент показывает пользователю строку «clDefault»:

ColorBox1->ItemIndex = ColorBox1->Items->IndexOf(“clDefault”);

  1. Приведенные выше операторы поместите в обработчики соответствующих событий. Запустите приложение на выполнение. Убедившись в работоспособности приложения, изучите свойство Style путем выполнения приложения при включении каждого элемента свойства.