
- •Тема: Синхронизация действий средствами компонента tActionList
- •Задание
- •Порядок выполнения работы
- •Технология задания действий средствами ActionList
- •Подсоединение действия из списка Action
- •Создания окон диалогов
- •Описание компонента StaticText
- •Описание компонента LabeledEdit
- •Описание компонента RichEdit
Рыбалка С.А., Шкатова Г.И., C++Builder
Тема: Синхронизация действий средствами компонента tActionList
Цель работы: Получить основные навыки в использовании диспетчера действий при создании приложений.
Задание
Разработать приложение в соответствии с вариантом задания, содержащее главное и контекстные меню, действия в которых должны содержать элементы использования стандартных диалогов и должны быть синхронизированы.
Рис.1. Пример интерфейса для работы с меню и диалогами
Порядок выполнения работы
Подготовить новый проект.
Познакомиться с методическим указанием.
В рабочей тетради поместить условие задачи.
Подготовить список действий (сначала в рабочей тетради), распределить по категориям, дать имена (Category, Caption и Name) в соответствии с технологией ActionList.
Задать действия с помощью ActionList.
Расположить на форме необходимые компоненты.
Задать свойства компонентов. Для компонентов OpenDialog и SaveDialog обязательно задать свойство Filter.
Подключить к кнопкам и меню действия из ActionList .
Убедиться, что команды выполняют работу синхронно и в соответствии со своим назначением.
Подготовить отчет и сдать работу преподавателю В отчет включить помимо технологии создания ActionList две процедуры с действиями.
Методические указания
Одним из основных элементов интерфейса Windows программ является включение в него различного вида меню.
Каждое серьезное приложение должно иметь:
главное меню MainMenu;
инструментальную панель быстрых кнопок (например, ТооlBаг), дублирующих основные разделы меню;
контекстные меню PopupMenu, всплывающие при щелчке пользователя правой кнопкой мыши на том или ином компоненте;
ярлычки подсказок (реализуются свойством Hint), всплывающие при перемещении курсора мыши над быстрыми кнопками и иными компонентами;
полосу состояния StatusBar, используемую часто для развернутых подсказок;
файл справки, темы которого отображаются при нажатии клавиши Fl и при выборе пользователем соответствующего раздела меню.
Хорошо структурированное приложение, обеспечивающее простоту его модернизации и сопровождения, должно строиться на основе диспетчеризации действий основных операций, предусмотренных в нем (действия заранее прописываются, а где они потребуются — подсоединяются).
Одним из компонентов, осуществляющих диспетчеризацию действий, является компонент ActionList.
Технология задания действий средствами ActionList
На этапе анализа задачи устанавливается список действий, предназначенных обеспечить функциональность приложения. Отдельно определяются те действия, которые предполагается дублировать в различных командах меню и управляющих кнопках.
Определяются названия для этих действий, а также категории, к которым их можно отнести и определяются названия категорий. Эти названия пойдут в следующие свойства: Category, Caption и Name компонента ActionList.
Свойство Category (категория) не имеет отношения к выполнению приложения. Задание категории просто позволяет в процессе проектирования сгруппировать действия по их назначению.
Свойство Caption будет определять название действия.
Свойство Name будет определять имя действия, под которым это действие будет известно в программе.
Н азвания должны быть осмысленными и отражать суть! Например, составлен перечень действий: задать цвет формы, задать цвет Memo, задать шрифт метки, задать шрифт Edit, взять файл, сохранить файл, выйти из программы.
Можно взять следующие названия:
Имена категорий: «Цвет», «Фонт», «Файл». «Выход».
Названия действий: «Цвет формы», «Цвет Memo», ….
Имена действий: actColorForm, actFontLabel, actSave, actExit, ….
Поместить на форму компонент ImageList (страница Win32). К ImageList подсоединить список графических образов (16x16), которые будут отображаться на кнопках и командах.
Поместить на форму компонент ActionList (страница Standard).
Установить в свойстве Images компонента ActionList — имя списка ImageList, размещенного на форме и заполненного изображениями.
Открыть редактор действий, например, двойным щелчком на компоненте ActionList. В результате откроется окно ‘Editing Form1->ActionList1’, как это показано справа на рис.3.
Сделав на этом компоненте двойной щелчок, вы попадаете в редактор действий, позволяющий вводить и упорядочивать действия.
|
New Action Ins |
Рис. 3. Для каждой “New Action List”(справа) заполнить поля Category, Caption, Name (слева)
Для каждого действия из заготовленного списка (смотри пункты 1-2) выполнить:
Добавить новое действие либо с помощью кнопки “New Action Ins”, как это показано на рис. 3, либо с помощью контекстного меню.
В окне Инспектора объектов заполнить поля: Name, Caption, Category (рис. 3 слева).
Для каждого действия указать свойство Imagelndex, которое является индексом (начиная с 0) изображения, соответствующего данному действию в отдельном компоненте списка изображений ImageList. Этот индекс передастся в дальнейшем компонентам, связанным с данным событием — разделам меню, кнопкам.
Результаты изменения отразятся в окне Object TreeView на элементе ActionList1, как это показано на рис. 4.
К аждое действие, которое вы внесли в список — это объект типа TAction В Инспекторе Объектов для каждого действия вы можете установить помимо свойств Name, Caption, Category, можно установить и другие, например: Shortcut — «горячие» клавиши, Hint — подсказки в ярлычках и панели состояния, Enabled, Visible,. Checked (пока отложить).
|
|
Рис. 4. Представление элемента ActionList1 в окне Object TreeView
Для каждого из действий создать обработчик события. Для этого обратиться к событиям OnExecute, как это показано на рис. 5, в который вписывается соответствующий текст. Например, для действия “Выход”:
void __fastcall TForm1::actExitExecute(TObject *Sender)
{
Close ();
}
|
Двойной щелчок |
Рис.5. Создание обработчика событий для соответствующего действия
Присоединить действия к нужным кнопкам, пунктам меню и т.п.
Назначение компонента ActionList?
Какие действия рекомендуется включать в ActionList?
Технология создания списка действий средствами ActionList?
Как подсоединить действие из ActionList к кнопке? К команде меню?
Как заполнить его пункты из ActionList?
Как заполнить контекстное меню из ActionList?
Меню
Одним из основных элементов интерфейса Windows программ является меню. В приложениях, написанных на C++Builder, могут быть реализованы меню двух основных видов:
Главное меню (MainMenu). Такое меню принадлежит форме и отображается вместе с ней под панелью заголовка окна. Если в приложении несколько форм, то для удобства можно объединять меню всех активных форм в одном.
Всплывающее меню (Pop up). Такое меню предусмотрено почти у всех компонентов (т.е. свойство на стадии разработки). Во время работы программы такое меню возникает (всплывает) при нажатии правой кнопки мыши на этом компоненте. Предусмотрено такое меню и у формы.
Меню является иерархическими структурами (деревом), состоящими из пунктов меню. Каждый пункт может быть выбран. Пункт меню может быть выбран вследствие или щелчка кнопкой мыши, или нажатия соответствующих клавиш на клавиатуре, или вызова из процедуры в программе.
На самом нижнем уровне меню лежат команды меню — пункты, с которыми связана та или иная процедура, реализующая реакцию приложения на выбор этого пункта меню. Команды меню объединяются в подменю. Подменю — это пункты, выбор которых позволяет открыть список пунктов меню или других подменю.
Каждый пункт меню является компонентом TMenuItem (нет на палитре компонент). Каждый компонент TMenuItem имеет свойства :
Enable - запрещает исполнение этого пункта;
Visible - указывает является ли видимым этот пункт меню; если значение False, то в меню нет строки с этим пунктом;
Checked, RadioItem — установка этих свойств в значение True, позволяет организовать на пунктах меню элементы подобные компонентам CheckBox и RadioButton. При этом установку/снятие маркеров ("галочек" или точек) необходимо организовывать программно установкой свойства Checked.
ShortCut — позволяет выбрать и установить комбинацию "горячих клавиш" для активизации этой команды с клавиатуры.
Создание главного меню
Из палитры компонент (страница Standard) на форму перетаскивается компонент TMenu. Компонента отображается на форме в виде иконки неизменяемого размера. Помимо этого появляется строка меню на форме, с единственным пунктом пустышкой.
К
онструктор
меню (или Дизайнер Меню) запускается
через свойство Items в Инспекторе Объектов.
Для запуска необходимо дважды щелкнуть
на значении свойства Items, где написано
«(Меню)». Можно также щелкнуть на
компоненте MainMenu на форме и
воспользоваться контекстным меню от
правой кнопки мыши. Сначала меню состоит
из одного пустого элемента. Добавление
пункта меню заключено в заполнении
пустого элемента и выполнении “Enter”.
Для вставки можно использовать “Insert”.
Для удаления – “Delete”.
Если перед некоторой буквой в тексте
команды поставить знак &, то во время
выполнения программы соответствующая
буква будет изображаться с подчеркиванием.
Эту букву можно использовать в качестве
“горячей” клавиши.
Cвойство Caption задает наименование раздела меню. При использовании ActionList следует вручную вписать название категории, заданное в ActionList. После этого справа появляется пустышка для наименования другого раздела меню (заполняется по потребности), а внизу пустышка для первого пункта меню в этом разделе. При использовании ActionList для “пустышки” нужно просто сделать выбор в свойстве Action и наименование раздела встанет автоматически. По мере заполнения пунктов меню, появляется пустышка для новых пунктов.
Чтобы во время работы программы при выборе пункта меню (без ActionList) происходило действие необходимо: на форме выбрать пункт меню; в Object Inspector, на странице Events, в строке onClick, необходимо указать имя процедуры исполняющейся при выборе этого пункта меню. Тогда при выборе пункта меню, во время выполнения программы, инициируется событие onClick и запускается эта процедура обработчик.
Создание всплывающего меню
Создается подобно главному меню. Но это меню имеет только пункты (одна колонка команд). Чтобы Pop Up меню вызывалось по нажатию правой кнопки мыши во время работы программы, необходимо его привязать к конкретному компоненту или к форме. Для этого выбирают компонент и, в свойстве PopupMenu инспектора объектов, указывают имя необходимого ранее созданного Pop Up меню.