Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций по дисциплине Объектно-ориентирован...doc
Скачиваний:
33
Добавлен:
01.07.2025
Размер:
14 Мб
Скачать
☆

Лекция №19 Тема: Компоненты организации управления приложением

План:

  1. Характеристика компонентов организации управления приложением

  2. Диспетчеризация событий — компоненты, связанные с ActionList

  3. Список изображений — компонент ImageList

  4. Приложение — компонент ApplkationEvents и объект Application

1. Характеристика компонентов организации управления приложением

Имеется несколько компонентов, которые сами по себе не выполняют никаких действий, но помогают организовать взаимодействие компонентов в приложении и обмен информацией между приложениями. Это компоненты, представленные в таблице. Компоненты ActionList и ImageList организуют управление внутри приложения и позволяют сделать его код более четким и понятным, отвечающим принципам объектно-ориентированного программирования.

Компоненты OLEContainer, DDEClientConv, DDECIientltem и TDDEServerltem организуют взаимодействие одновременно выполняемых приложений по двум различным технологиям: OLE и DDE. (см. рис. 57)

рис. 57. Компоненты OLEContainer, DDEClientConv, DDECIientltem и TDDEServerltem

К компонентам, организующим управление приложением, можно также отнести объект Application — приложение. Он отсутствует в палитре компонентов, но всегда создается автоматически в каждом приложении (см. табл. 22).

Таблица 22

Компоненты организации управления приложением

Компонент

Страница

Описание

ActionList

(список событий)

Standard

Обеспечивает диспетчеризацию событий компонентов

ImageList

(список изображений)

Win32

Предназначен для работы со списками изображений одинакового размера в меню, инструментальных панелях и

AppIicationEvents

(события приложения)

Additional

Перехватывает события приложения

OLEContainer

(контейнер OLE)

System

Используется при создании области клиента для объекта OLE

DDEClientConv

(диалог с сервером DDE)

System

Используется клиентом DDE для организации диалога с сервером DDE

1

2

3

DDECIientltem

(данные, передаваемые серверу DDE)

System

Используется для определения данных клиента, передаваемых в диалоге серверу DDE

TDDEServerltem

(данные, передавае­мые клиенту DDE)

System

Используется для определения данных сервера, передаваемых клиенту DDE в течение диалога

2. Диспетчеризация событий — компоненты, связанные с ActionList

Начиная с Delphi 4 появился инструментарий, который, не добавляя никаких принципиально новых возможностей, позволяет систематизировать и упорядочить разработку объектно-ориентированных приложений. К тому же грамотное его использование позволяет сэкономить немало времени при проектировании. Для организации диспетчерезации событий введены следующие понятия.

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

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

Редактор связей — объект типа TActionLink, который поддерживает связь между действиями и инициаторами действий. Редактор связей определяет, какое действие должно выполняться для данного инициатора.

Цель действия — объект, в котором отражается результат действия. Это может быть окно отображения или редактирования текста, набор данных и т.п.

В начале проектирования приложения разработчик должен представить себе список тех действий, которые может осуществлять пользователь. Конечно, в процессе проектирования этот список будет пополняться и изменяться, но некоторое начальное приближение очень полезно продумать заранее. Практическая реализация составленного вами списка действий может начинаться с переноса на проектируемую форму невизуального компонента ActionList, расположенного на странице библиотеки Standard. Сделав на этом компоненте двойной щелчок, вы попадаете в редактор действий, позволяющий вводить и упорядочивать действия. (см. рис. 58)

рис. 58. Компонент ActionList

Щелчок правой кнопкой мыши или щелчок на маленькой кнопочке со стрелкой вниз правее первой быстрой кнопки окна редактирования позволит вам выбрать одну из команд: New Action (новое действие) или New Standard Action... (новое стандартное действие). Первая из них относится к вводу нового действия любого типа. По умолчанию эти действия будут получать имена Actionl, Action2 и т.д. Вторая команда открывает окно, в котором вы можете выбрать необхо­димое вам стандартное действие (или сразу несколько действий). После этого в правом окне (Actions) редактора появятся имена выбранных действий, а в левом (Categories) — категории действий.

Каждое действие, которое вы внесли в список — это объект типа TAction для нестандартных действий или других производных типов для стандартных. Выбрав в окнах редактора ту или иную категорию или [AIIActions] (все категории), а в правом — конкретное действие, вы можете увидеть в Инспекторе Объектов его свойства и события. Вы можете установить свойство Name (имя) — оно появится в пра­вом окне редактора свойств и будет в дальнейшем фигурировать в заголовках обра­ботчиков событий. Можете также установить надпись (Caption), которая далее будет появляться в инициаторах действия — кнопках, разделах меню и т.д. Можете задать быстрые клавиши (Shortcut), надписи на ярлычках подсказок и в строке состояний (Hint), идентификатор темы контекстной справки (HelpContext) и другие обычные для многих компонентов свойства.

Можно для каждого или некоторых действий указать свойство Imagelndex, которое является индексом (начиная с 0) изображения, соответствующего данному действию в отдельном компоненте списка изображений ImageList. Этот индекс передастся в дальнейшем компонентам, связанным с данным событием — разделам меню, кнопкам. Если в свойстве Images компонента ActionList указать имя списка, размещенного на форме и заполненного изображениями, то эти изображения появятся также в окне редактора действий.

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

На странице событий Инспектора Объектов для каждого действия определено три события: OnExecute, OnUpdate и OnHint.

Событие OnExecute возникает в момент, когда пользователь инициализировал действие, например, щелкнув на компоненте (разделе меню, кнопке), связанном с данным действием. Обработчик этого события должен содержать процедуру, реа­лизующую данное действие. Например, обработчик события OnExecute действия Exit может в простейшем случае иметь вид

procedure begin

Close; end;

TForml.ExitExecute(Sender: TObject)

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

Событие OnUpdate периодически возникает в промежутках между действиями. Возникновение этих событий прекращается только во время реализации события или во время, когда пользователь ничего не делает и компьютер находится в состоянии ожидания действий. Обработчик события OnUpdate может содержать какие-то настройки, подготовку ожидаемых дальнейших действий или выполнение каких-то фоновых операций.

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

Наличие в объекте действия событий OnUpdate и OnHint обогащает ваши возможности по проектированию приложения. Без этого объекта подобные события отсутствуют и их, при необходимости, приходится моделировать более сложными приемами.

Связь объектов действий с конкретными инициализаторами действий — управляющими элементами типа кнопок, разделов меню и т.д., осуществляется через свойство Action, имеющееся у всех управляющих элементов. Поместите на вашу форму кнопку, и вы увидите в Инспекторе Объектов это свойство. Раскройте его выпадающий список и выберите из него действие, которое вами было предварительно описано. Вы сможете заметить, что после этого в кнопку перенесутся такие свойства объекта действия, как Caption, Hint и др., и что в ее событие OnClick подставится обработчик, предусмотренный вами для данного действия. Если далее вы введете в приложение меню с разделом, соответствующим тому же действию, и укажете в нем то же значение свойства Action, то свойства и обработчики событий объекта действия будут перенесены и на этот раздел меню. Вам не придется повторно задавать значение Hint, Caption и др.