- •Федеральное агентство по образованию государственное образовательное учреждение
- •Кафедра автоматики и телемеханики интегрированная среда разработки приложений
- •Лабораторная работа 1 Ознакомление с Интегрированной Средой Разработки (иср)
- •Основное окно иср
- •Библиографический список
- •Лабораторная работа 2 Формы и компоненты Включение в проект новой формы
- •Размещение компонентов на форме
- •Депозитарий – хранилище форм и проектов
- •Задание 7. Опробовать режимы заимствования форм из Депозитария
- •Библиографический список
- •Лабораторная работа 3 Отладка приложений Компиляция и компоновка проекта
- •Сообщения компилятора и компоновщика
- •Действия в случае ошибки выполнения
- •Дальнейшие действия
- •Окно наблюдения Список Часов
- •Окно оценки и модификации Оценить|Изменить
- •Пошаговое выполнение приложения
- •Точки прерывания
- •Использование окна Инспектора Отладки
- •Другие средства отладки
- •Библиографический список
- •Лабораторная работа 4 Компоненты ввода и отображения текстовой информации
- •Компоненты Label, StaticText, Panel
- •Компоненты Edit, LabeledEdit, MaskEdit
- •Компоненты Memo, RichEdit
- •Компоненты ListBox, CheckListBox, ValueListEditor
- •Компонент StringGrid
- •Библиографический список
- •Лабораторная работа 5 Диаграммы и графики Компонент Chart
- •Компонент Image
- •Формирование квадратных матриц
- •Кнопки, индикаторы, управляющие элементы
- •Управляющие кнопки Button и BitBtn
- •Кнопка с фиксацией SpeedButton
- •Группы радиокнопок − компоненты RadioGroup, RadioButton и GroupBox
- •Индикаторы CheckBox и CheckListBox
- •Ползунки и полосы прокрутки − компоненты TrackBar и ScrollBar
- •Заголовки − компоненты HeaderControl и Header
- •Таймер − компонент Timer
- •Панели и компоненты внешнего оформления
- •Панели общего назначения − компоненты Panel,
- •Многостраничные панели − компоненты TabControl,
- •Инструментальные панели − компоненты ToolBar и PageScroller
- •Перестраиваемые панели − компоненты CoolBar и ControlBar
- •Библиографический список
- •Лабораторная работа 9 Системные диалоги
- •Диалоги открытия и сохранения файлов – компоненты
- •Фрагменты диалогов – компоненты
- •Диалог выбора шрифта – компонент FontDialog
- •Диалоги выбора цвета – компоненты ColorDialog, ColorBox
- •Диспетчеризация действий на основе компонента ActionList
- •Диспетчеризация действий на основе компонентов ActionManager, ActionMainMenuBar, ActionToolBar, CustomizeDlg
- •Библиографический список
Диалоги выбора цвета – компоненты ColorDialog, ColorBox
Начните новое приложение, перенесите на форму компоненты ColorDialog1, MainMenu1 и Memo1. В свойство Caption формы впишите ДИАЛОГ COLORDIALOG.
Компонент ColorDialog1 вызывает диалоговое окно выбора цвета, в котором пользователь может выбрать цвет из базовой палитры или, нажав кнопку Определить цвет, раскрыть дополнительную панель, позволяющую синтезировать цвет, отличный от базовых. Синтез цвета производится перемещением курсора по горизонтали для выбора оттенка и по вертикали для выбора контрастности. Яркость регулируется перемещением по вертикальной шкале справа от матрицы цветов. Синтезированный цвет можно добавить кнопкой Добавить в набор в палитру дополнительных цветов на левой панели и использовать его в дальнейшем.
Основное свойство компонента ColorDialog1 – Color. Это свойство соответствует тому цвету, который выбрал в диалоге пользователь. Если при вызове диалога желательно установить некоторое начальное приближение цвета, это можно сделать, установив Color предварительно во время проектирования или программно.
Сконструируйте меню с командой Цвет, в обработчик которой впишите оператор задания цвета фона компонента Memo1:
if(ColorDialog1->Execute())
Memo1->Color = ColorDialog1->Color;
Установите произвольное значение свойства Color, запустите приложение на выполнение. После ввода команды Цвет появится диалоговое окно выбора цвета, в котором нажмите OK. Цвет фона Memo1 совпадет с установленным в свойстве Color цветом.
Свойство 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. Убедитесь в этом.
Выполняйте приложение, задавая в окне Цвет основные и дополнительные цвета.
Свойство Options компонента ColorDialog1 содержит множество следующих опций:
cdFullOpen |
Отображать сразу при открытии диалогового окна панели определения заказных цветов |
cdPreventFullOpen |
Запретить появление в диалоговом окне кнопки Определить цвет, так что пользователь не сможет определять новые цвета |
cdShowHelp |
Добавить в диалоговое окно кнопку Справка |
cdSolidColor |
Указать Windows использовать сплошной цвет, ближайший к выбранному (это обедняет палитру) |
cdAnyColor |
Разрешить пользователю выбирать любые не сплош-ные цвета (такие цвета могут быть не ровными) |
По умолчанию все опции выключены.
Рассмотренный компонент ColorDialog вызывает стандартный диалог Windows, возможности которого зачастую избыточны. Пользователю удобнее выбирать цвет с помощью выпадающего списка. Такую возможность предоставляет компонент ColorBox (страница Дополнительно).
Перенесите на форму компонент 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”);
Приведенные выше операторы поместите в обработчики соответствующих событий. Запустите приложение на выполнение. Убедившись в работоспособности приложения, изучите свойство Style путем выполнения приложения при включении каждого элемента свойства.
Библиографический список
Архангельский АЯ Программирование в C++Builder 6. – М: ЗАО «Издательство БИНОМ», 2003 – 1152 с – С 237–256, 1062–1064, 1136.
Шамис В.А. Borland C++ Builder 6. Для профессионалов / В.А. Шамис.− СПб.: Питер, 2003.− 798 с.– С. 434–437.
ЛАБОРАТОРНАЯ РАБОТА 10
Технология разработки приложений.
Диспетчеризация действий
Прежде чем начать программирование приложения, нужно составить список действий, которые должны быть доступны будущему пользователю через разделы меню, инструментальные панели, кнопки и другие элементы управления. При программировании этот список реализуется специальными компонентами, обеспечивающими диспетчеризацию действий, – ActionList и ActionManager. Редактор диспетчера действий ActionList позволяет сформировать список действий, написать обработчики, выполняющие задуманные действия, задать основные свойства будущих интерфейсных элементов – пиктограммы, надписи, быстрые кнопки, тексты подсказок и т.п. Диспетчер действий ActionManager намного мощнее диспетчера ActionList.
После того, как список действий создан, надо сформировать полосы действий. Это полосы, на которых располагаются интерфейсные компоненты действий – полоса главного меню и инструментальные панели. При использовании диспетчера ActionList полосы действий добавляют на форму в виде отдельных компонентов, создают на них инициаторы действий (разделы меню, быстрые кнопки), а затем связывают инициаторы с соответствующими действиями из списка диспетчера ActionList. При таком связывании свойства, заложенные в действия, автоматически передаются интерфейсным компонентам. В диспетчере ActionManager создание полос действий упрощается. Они создаются и формируются непосредственно из редактора ActionManager простым перетаскиванием мышью.
Интерфейсные компоненты действий обычно должны содержать поясняющие их изображения. Изображения собираются в списке изображений – компоненте ImageList. Для нестандартных действий изображения загружаются в ImageList пользователем. А изображения для стандартных действий загружаются в ImageList автоматически по мере формирования списка в диспетчере действий.
Таким образом, последовательность формирования списка действий и проектирования меню и инструментальных панелей сводится к следующим шагам.
Составляется список действий, которые должны быть доступны будущему пользователю через разделы меню, инструментальные панели, кнопки и другие элементы управления.
Для тех нестандартных действий, которые должны быть доступны из быстрых кнопок инструментальной панели, готовится список пиктограмм на кнопках в компоненте ImageList.
На главную форму переносится компонент диспетчеризации действий: ActionList или ActionManager. Компонент связывается с ImageList. Формируется список стандартных и нестандартных действий.
Каждому действию задается набор характеристик: Name (имя), Caption (надпись, в которой выделяется символ быстрого доступа), ShortCut («горячие» клавиши), ImageIndex (номер изображения в ImageList), Hint (тексты подсказок), HelpContext или HelpKeyWord (ссылка на тему справки) и др. Для нестандартных действий все эти характеристики записываются пользователем. Для стандартных действий они заносятся автоматически. Нужно только надписи и подсказки перевести на русский язык и, может быть, исправить ссылки на неприемлемые стандартные изображения и комбинации «горячих» клавиш. Если в приложении предусматривается контекстная справка, то надо задать ссылки на соответствующие темы. Естественно, в начале проектирования справки еще нет. Так что свойства HelpContext и HelpKeyWord задают позднее.
Записываются обработчики событий выполнения для всех нестандартных действий. Стандартные действия обрабатываются автоматически и для многих из них достаточно задать некоторые свойства обработки. Но иногда надо писать обработчики и для стандартных действий.
Дальнейшие шаги зависят от используемого диспетчера. Для диспетчера ActionList далее надо сделать следующее.
На форму переносится компонент MainMenu – главное меню, связывается с ImageList, в компоненте формируется меню и в его разделах даются ссылки на действия, описанные в ActionList.
На форме создается инструментальная панель (обычно компонент ToolBar). Панель связывается с ImageList, а в ее кнопках даются ссылки на действия, описанные в ActionList.
В случае использования диспетчера ActionManager следующие шаги таковы.
На форму переносится компонент ActionMainMenuBar – полоса главного меню. Она связывается с диспетчером ActionManager. Затем из редактора ActionManager перетаскиваются мышью на полосу главного меню категории разделов, которые должны входить в меню как головные разделы или отдельные действия.
В редакторе ActionManager создается новая инструментальная панель, или несколько панелей. На них перетаскиваются мышью необходимые действия.