Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБ_ПОА_2005_Builder.doc
Скачиваний:
6
Добавлен:
03.05.2019
Размер:
1.26 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 путем выполнения приложения при включении каждого элемента свойства.

Библиографический список

  1. Архангельский АЯ Программирование в C++Builder 6. – М: ЗАО «Издательство БИНОМ», 2003 – 1152 с – С 237–256, 1062–1064, 1136.

  2. Шамис В.А. Borland C++ Builder 6. Для профессионалов / В.А. Шамис.− СПб.: Питер, 2003.− 798 с.– С. 434–437.

ЛАБОРАТОРНАЯ РАБОТА 10

Технология разработки приложений.

Диспетчеризация действий

Прежде чем начать программирование приложения, нужно составить список действий, которые должны быть доступны будущему пользователю через разделы меню, инструментальные панели, кнопки и другие элементы управления. При программировании этот список реализуется специальными компонентами, обеспечивающими диспетчеризацию действий, – ActionList и ActionManager. Редактор диспетчера действий ActionList позволяет сформировать список действий, написать обработчики, выполняющие задуманные действия, задать основные свойства будущих интерфейсных элементов – пиктограммы, надписи, быстрые кнопки, тексты подсказок и т.п. Диспетчер действий ActionManager намного мощнее диспетчера ActionList.

После того, как список действий создан, надо сформировать полосы действий. Это полосы, на которых располагаются интерфейсные компоненты действий – полоса главного меню и инструментальные панели. При использовании диспетчера ActionList полосы действий добавляют на форму в виде отдельных компонентов, создают на них инициаторы действий (разделы меню, быстрые кнопки), а затем связывают инициаторы с соответствующими действиями из списка диспетчера ActionList. При таком связывании свойства, заложенные в действия, автоматически передаются интерфейсным компонентам. В диспетчере ActionManager создание полос действий упрощается. Они создаются и формируются непосредственно из редактора ActionManager простым перетаскиванием мышью.

Интерфейсные компоненты действий обычно должны содержать поясняющие их изображения. Изображения собираются в списке изображений – компоненте ImageList. Для нестандартных действий изображения загружаются в ImageList пользователем. А изображения для стандартных действий загружаются в ImageList автоматически по мере формирования списка в диспетчере действий.

Таким образом, последовательность формирования списка действий и проектирования меню и инструментальных панелей сводится к следующим шагам.

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

  2. Для тех нестандартных действий, которые должны быть доступны из быстрых кнопок инструментальной панели, готовится список пиктограмм на кнопках в компоненте ImageList.

  3. На главную форму переносится компонент диспетчеризации действий: ActionList или ActionManager. Компонент связывается с ImageList. Формируется список стандартных и нестандартных действий.

  4. Каждому действию задается набор характеристик: Name (имя), Caption (надпись, в которой выделяется символ быстрого доступа), ShortCut («горячие» клавиши), ImageIndex (номер изображения в ImageList), Hint (тексты подсказок), HelpContext или HelpKeyWord (ссылка на тему справки) и др. Для нестандартных действий все эти характеристики записываются пользователем. Для стандартных действий они заносятся автоматически. Нужно только надписи и подсказки перевести на русский язык и, может быть, исправить ссылки на неприемлемые стандартные изображения и комбинации «горячих» клавиш. Если в приложении предусматривается контекстная справка, то надо задать ссылки на соответствующие темы. Естественно, в начале проектирования справки еще нет. Так что свойства HelpContext и HelpKeyWord задают позднее.

  5. Записываются обработчики событий выполнения для всех нестандартных действий. Стандартные действия обрабатываются автоматически и для многих из них достаточно задать некоторые свойства обработки. Но иногда надо писать обработчики и для стандартных действий.

Дальнейшие шаги зависят от используемого диспетчера. Для диспетчера ActionList далее надо сделать следующее.

  1. На форму переносится компонент MainMenu – главное меню, связывается с ImageList, в компоненте формируется меню и в его разделах даются ссылки на действия, описанные в ActionList.

  2. На форме создается инструментальная панель (обычно компонент ToolBar). Панель связывается с ImageList, а в ее кнопках даются ссылки на действия, описанные в ActionList.

В случае использования диспетчера ActionManager следующие шаги таковы.

  1. На форму переносится компонент ActionMainMenuBar – полоса главного меню. Она связывается с диспетчером ActionManager. Затем из редактора ActionManager перетаскиваются мышью на полосу главного меню категории разделов, которые должны входить в меню как головные разделы или отдельные действия.

  2. В редакторе ActionManager создается новая инструментальная панель, или несколько панелей. На них перетаскиваются мышью необходимые действия.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]