- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Контрольні питання
- •Контрольні питання
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.2: основні конструкції мови.
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.2: основні конструкції мови.
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.2: основні конструкції мови.
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.2: основні конструкції мови
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.2: основні конструкції мови
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.3: галуження і цикли
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.3: галуження і цикли
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.3: галуження і цикли
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.3: галуження і цикли
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.3: галуження і цикли
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.4: елементи інтерфейсу
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.5: основи створення прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.5: основи створення прикладних застосувань
- •План заняття
- •Контрольні питання
- •Контрольні питання:
- •Необхідні теоретичні відомості для практичної роботи:
- •Контрольні питання:
- •Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
- •Тема 1.5: основи створення прикладних застосувань
- •План заняття
- •Проект Delphi
- •Модулей в проект.
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.1: основи мови object pascal
- •План заняття
- •Контрольні питання
- •Контрольні питання
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.1: основи мови object pascal
- •План заняття
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.1: основи мови object pascal
- •План заняття
- •Контрольні питання
- •Контрольні питання
- •Функции преобразования в числовой формат и обратно
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.1: основи мови object pascal
- •План заняття
- •7.1. Простые типы
- •Контрольні питання
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.2: графіка, мультимедія та друк
- •План заняття
- •Контрольні питання
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.2: графіка, мультимедія та друк
- •План заняття
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.2: графіка, мультимедія та друк
- •План заняття
- •Контрольні питання
- •Контрольні питання
- •Змістовий модуль 2: процедурно-орієнтоване програмування. Програмування графіки
- •Тема 2.2: графіка, мультимедія та друк
- •План заняття
- •Контрольні питання
- •Печать с помощью объекта Printer
- •Подготовка и печать отчетов с помощью QuickReport — компоненты QuickRep, qrSubDetail, qrLabel, qrExpr, qrSysData, qrMemo, qrRichText, qrShape, qrImage
- •Контрольні питання
- •Змістовий модуль 3: масиви. Записи та множини
- •Тема 3.1: масиви
- •План заняття
- •Листинг 1. Инициализация и вывод массива
- •Ввод массива
- •Использование компонента StringGrid
- •Листинг 2. Ввод и обработка массива целых чисел
- •Листинг 3. Процедура обработки события OnKeyPress
- •Листинг 4. Ввод и обработка массива дробных чисел
- •Контрольні питання
- •Объявление записи
- •Инструкция with
- •Ввод и вывод записей в файл
- •Вывод записи в файл
- •Листинг 25. Добавление записей в файл
- •Чтение записи из файла
- •Листинг 26. Чтение записей из файла
- •Контрольні питання
- •Змістовий модуль 3: масиви. Записи та множини
- •Тема 3.3: множини
- •План заняття
- •Контрольні питання
- •Необхідні теоретичні відомості для практичної роботи:
- •Контрольні питання:
- •Змістовий модуль 3: масиви. Записи та множини
- •Тема 3.4: множини обовязкова контрольна робота №28
- •Змістовий модуль 4: файлові структури даних. Динамічні структури даних
- •Тема 4.1: робота з файлами
- •План заняття
- •Объявление файла
- •Назначение файла
- •Вывод в файл
- •Открытие файла для вывода
- •Листинг 20. Создание нового или замещение существующего файла
- •Листинг 21. Добавление в существующий файл
- •Ошибки открытия файла
- •Закрытие файла
- •Пример программы
- •Листинг 22. Простая база данных (запись в файл)
- •Ввод из файла
- •Открытие файла
- •Листинг 23. Обработка ошибки открытия файла (фрагмент программы)
- •Чтение данных из файла
- •Чтение чисел
- •Чтение строк
- •Конец файла
- •Листинг 24.. Чтение из файла
- •Контрольні питання
- •Змістовий модуль 4: файлові структури даних. Динамічні структури даних
- •Тема 4.1: файлові структури даних. Динамічні структури даних
- •План заняття
- •Контрольні питання
- •Указатели
- •Динамические переменные
- •Листинг 27. Создание, использование и уничтожение динамических переменных
- •Листинг 28. Добавление элемента в начало динамического списка
- •Упорядоченный список
- •Добавление элемента в список
- •Листинг 29. Добавление элементов в упорядоченный список
- •Удаление элемента из списка
- •Листинг 30. Удаление узла из списка
- •Контрольні питання
- •Необхідні теоретичні відомості для практичної роботи:
- •Контрольні питання:
- •Необхідні теоретичні відомості для практичної роботи:
- •Контрольні питання:
- •Змістовий модуль 4: файлові структури даних. Динамічні структури даних
- •Тема 4.2: динамічні структури
- •План заняття
- •Вариантные переменные
- •Контрольні питання
- •Const-параметры
- •Контрольні питання
- •Змістовий модуль 4: файлові структури даних. Динамічні структури даних
- •Тема 4.2: динамічні структури
- •План заняття
- •Способы вызова подпрограмм
- •Контрольні питання
- •Этапы разработки программы
- •Спецификация
- •Создание установочного диска
- •Алгоритм и программа
- •Контрольні питання
- •Этапы разработки программы
- •Спецификация
- •Создание установочного диска
- •Алгоритм и программа
- •Контрольні питання
- •Контрольні питання
- •Необхідні теоретичні відомості для практичної роботи:
- •Контрольні питання:
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.2: Візуальні компоненти
- •План заняття
- •Контрольні питання
- •Распознавание источника события, нажатых кнопок и клавиш, координат курсора
- •События клавиатуры
- •Распознавание нажатых клавиш
- •Контрольні питання
- •Создание нового IntraWeb приложения
- •Редактирование главной формы
- •Написание обработчика события для кнопки
- •Запуск созданного приложения
- •Контрольні питання
- •Управляющие кнопки Button и BitBtn
- •Кнопка с фиксацией SpeedButton
- •Группы радиокнопок — компоненты RadioGroup, RadioButton и GroupBox
- •Контрольні питання
- •Листинг 28. Добавление элемента в начало динамического списка
- •Упорядоченный список
- •Добавление элемента в список
- •Листинг 29. Добавление элементов в упорядоченный список
- •Удаление элемента из списка
- •Листинг 30. Удаление узла из списка
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Упражнения. Совершенствование проекта
- •Контрольні питання:
- •Контрольні питання
- •Упражнения
- •Контрольні питання:
- •Змістовий модуль 6: програмування з графами. Вызуальны компоненти. Бази даних.
- •Тема 6.2: візуальні компоненти
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.3: форми та меню
- •План заняття
- •Контрольні питання
- •Контекстное всплывающее меню — компонент PopupMenu
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.4: обробка виключних ситуацій
- •План заняття
- •Конрольні питання
- •Упражнения. Совершенствование проекта.
- •Контрольні питання:
- •Змістовий модуль 6: програмування з графами
- •Тема 6.4: обробка виключних ситуацій
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питанна
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.5: організація прикладних застосувань
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.6: основи баз даних
- •План заняття
- •Классификация баз данных
- •Локальная база данных
- •Удаленная база данных
- •Структура базы данных
- •Контрольні питання
- •Контрольні питання
- •Упражнения
- •Контрольні питання:
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.6: основи баз даних
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Insert into Имя таблицы
- •Insert into Имя_таблицы
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
- •Рисование круга
- •Контрольні питання
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи обов’язкова контрольна робота №63
- •Змістовий модуль 6: програмування з графами. Візуальні компоненти. Бази даних
- •Тема 6.7: навігація по набору даних. Мова sql. Створення довідкової системи
- •План заняття
Контрольні питання
Навести огляд компонента індикатори
Охарактеризувати властивості компонента індикатори
САМОСТІЙНА РОБОТА СТУДЕНТА
Змістовий модуль 1: основні поняття та означення. Елементи мови. Керування процесом обчислень
Тема 1.4: елементи інтерфейсу
Самостійне заняття №10 – Список дій
План заняття
Огляд компонента список дій
Характеристика властивостей компонента список дій
В данном занятии невозможно обойти вниманием такой важный компонент, как ActionList -2» . С одной стороны, можно превосходно обойтись без использования данного компонента и при этом с успехом создавать полноценные действующие приложения. Однако, с другой стороны, следует отметить, что применение компонента ActionList значительно облегчает работу программиста, позволяет застраховать себя от некоторых досадных ошибок в процессе создания приложения, а также делает сам код программы более изящным, красивым и, главное, легко читаемым. Возникает вопрос, каково же назначение данного компонента.
С помощью компонента ActionList осуществляется синхронизация элементов управления. Чтобы пояснить, что это означает, достаточно будет внимательно взглянуть на саму среду разработки Delphi. Легко заметить, что, например, операцию открытия файла можно осуществить с помощью пункта меню File \ Open, a также нажатием кнопки быстрого доступа - которая расположена на панели инструментов. Другой пример: окно настройки панели инструментов можно вызвать, обратившись к пункту главного меню View \ Toolbars | Customize или же выбрав пункт Customize в локальном меню главного окна среды разработки. Таким образом, возникает ситуация, когда одну и ту же операцию выполняют различные элементы управления. Чтобы не создавать для разных компонентов несколько различных обработчиков событий, которые должны будут выполнять одну и ту же функцию, следует использовать компонент ActionList, расположенный на странице Standard Палитры компонентов. При использовании данного компонента достаточно будет создать один обработчик событий, который будет реагировать на различные события нескольких управляющих элементов. Кроме этого, ActionList позволяет согласовывать еще некоторые действия, например, синхронно управлять доступностью и видимостью логически взаимосвязанных компонентов в различные моменты времени.
Реализуется описанный механизм с помощью объектов действия Action (тип TAction), которые содержатся в компоненте ActionList. Объекты класса TAction создаются с помощью специального редактора, который вызывается двойным щелчком мыши на компоненте либо обращением к пункту Action List Editor локального меню данного компонента. Общий вид этого редактора показан на рис. 9.9.
Объекты действия, создаваемые программистом, по умолчанию имеют имена Actionl, Action2 и т.д. Кроме этого, существует целый ряд стандартных объектов действия, таких, как, например, открытие, закрытие и сохранение файла, размещение окон каскадом или мозаикой и т.д., которые выбираются из различных категорий (список категорий находится в правой части окна редактора) и имеют соответствующие имена, например FileOpen (Открыть файла) или EditCut (вырезать). При использовании стандартных действий можно обойтись даже без создания соответствующих обработчиков событий, так как необходимые действия будут выполняться автоматически.
В качестве основных свойств объекта действия Action можно выделить следующие: Caption, Imagelndex, Enabled, Visible, Checked, Hint и Shortcut, которые аналогичны таким же свойствам пункта меню TMenuItem. Значения этих свойств будут автоматически присваиваться соответствующим свойствам компонентов, с которыми связан объект действия. Это предоставляет определенные преимущества. Часто возникает необходимость заблокировать или сделать невидимыми элементы управления, выполняющие некоторые действия. Например, должен быть невидим пункт меню Save {Сохранить), если в данный момент не открыт ни один из файлов, либо не должна быть доступна кнопка быстрого доступа Paste {Вставить), если предварительно текст не был скопирован в буфер. В том случае, если одно и то же действие выполняется различными элементами управления, возникает необходимость крайне внимательно отслеживать подобные моменты и соответствующим образом изменять значения свойств Enabled или Visible для каждого из компонентов. Если же используется объект действия, который связывает несколько таких компонентов, то достаточно будет только установить требуемое значение указанных свойств для самого объекта Action, а аналогичные свойства самих компонентов изменятся автоматически, одновременно делая данные компоненты видимыми или невидимыми, доступными или недоступными.
Несомненные удобства возникают также благодаря тому, что для группы связанных компонентов с помощью объекта действия можно задать «горячие» клавиши, устанавливая требуемое значение свойству Shortcut, или определить одинаковую всплывающую подсказку, задавая свойство Hint. Подобные возможности позволяют избежать некоторых досадных оплошностей и неточностей при разработке приложения.
Основными событиями для объекта действия являются OnExecute и OnUpdate.
Событие OnExecute возникает при щелчке мышью на одном из компонентов, связанных общим действием. Обработчик этого события должен реализовывать нужное действие.
Событие OnUpdate возникает, когда очередь сообщений для приложения пуста или когда обновляется содержимое списка действий.
Связь элементов управления с объектом действия осуществляется через свойство Action (тип TBasicAction). Если, например, необходимо связать кнопку Buttonl с объектом действия Actionl, то это делается следующим образом:
Buttonl.Action:= Actionl;
Безусловно, это свойство можно установить не только программным образом, но и с помощью Инспектора объектов.
Теперь при нажатии кнопки Buttonl будет выполняться обработчик события OnExecute объекта Actionl, а обработчик события OnClick самой кнопки не вызывается.
В Delphi 6 появилось еще несколько компонентов для работы с действиями, а в Delphi 7 состав этих компонентов был еще больше расширен. Теперь для более удобной и эффективной работы с объектами действия введены такие компоненты:
1) компонент управления действиями ActionManager (аналогичен ActionList), который используется для создания и управления объектами действия Action;
2) компонент меню ActionMainMenuBar позволяющий конструировать меню на основе существующих объектов дейст вия;
3) компонент панели инструментов ActionToolBar, который дает возможность разрабатывать панель инструментов с использованием объектов действия;
4) компоненты цветовых схем XP Color Map, Standard Color Map и TwilightColorMap "', позволяющие задавать различные общепринятые цветовые схемы для ActionMainMenuBar меню и панелей инструментов ActionToolBar.
Проиллюстрировать обращение с этими компонентами можно на небольшом примере.
Пример 9.4. Пусть необходимо создать приложение, которое позволяло бы с помощью меню или панели инструментов изменять цвет текста, выводимого на экран с помощью компонента Label.
Решение. Рассмотрим последовательность действий, которые необходимо сделать для решения данной задачи.
Создается новый проект.
На форму добавляется компонент Label, в свойство Caption которого записывается произвольный текст.
На форму также помещаются следующие компоненты: ImageList, ActionManager, ActionMainMenuBar, ActionToolBar, XPColorMap.
В компонент ImageList добавляются четыре рисунка, которые будут размещаться на кнопках панели инструментов, предназначенных для выбора цвета текста и выхода из программы.
Двойным щелчком по компоненту ActionManager открывается редактор списка действий. В этом редакторе последовательным нажатием кнопки New Action создается четыре объекта действия.
Свойству Images компонента присваивается значение ImageListl, а затем, путем установки требуемого значения свойству Imagelndex объектов Action, с каждым действием связывается соответствующий рисунок из списка графических образов. В результате этого окно редактора ActionManager принимает вид, показанный на рис. 9.10.
С помощью мыши все объекты действия перетаскиваются на панель инструментов ActionToolBar. Кнопки выбора цвета отделяются от кнопки выхода разделителем. Для этого из окна ActionManager следует перетащить кнопку Drag to create Separators на панель инструментов, где она отобразится в виде вертикального разделителя.
8. Для того чтобы на кнопках панели инструментов отобража лись только рисунки без текста, необходимо для каждой кнопки установить свойство ShowCaption в False, а свойство Show- Glyph - в True.
Кроме того, для каждого действия можно задать комбинацию "горячих" клавиш. Их отображением в панели инструментов управляет свойство ShowShortCut. В данном примере «горячие» клавиши использоваться не будут.
9. На следующем шаге создается меню, что включает в себя нижеприведенные этапы.
■ Вначале из окна ActionManager в меню перетаскивается действие Actionl. Затем для этого пункта меню очищается значение свойства Action, а свойству Caption присваивается значение «Цвет». Здесь необходимо сделать небольшой комментарий. Дело в том, что согласно плану в данном примере пункт меню Цвет должен включать в себя три подпункта для изменения цвета текста. Этот пункт не должен быть связан ни с каким конкретным объектом действия, а должен только лишь позволять открыть соответствующее подменю. Вероятно, существует другой способ добавить в меню новый пункт, не связанный с действием, однако авторы не смогли найти более приемлемого решения, чем то, которое приводится здесь и заключается в том, чтобы перетащить в меню объект действия, а затем убрать из свойства Action данного пункта меню ссылку на соответствующее действие. Результатом выполнения таких действий становится появление в меню Action-MainMenuBar пункта, не связанного с объектом действия.
Для данного пункта меню в Инспекторе объектов выбирается пункт Items, после чего нажатием кнопки, вызывается редактор Editing.ActionManager.Items, в котором добавляется три новых пункта меню.
Каждый из созданных пунктов связывается с соответствующим действием Actionl, Action2 и Action3 путем задания свойства Action. Свойствам Caption данных трех пунктов меню, соответственно, присваиваются значения «Зеленый», «Красный» и «Черный». Свойства ShowCaption и ShowGlyph каждого из этих пунктов должны иметь значение True (т.е. будут отображаться и рисунки, и текст заголовков).
Из окна редактора ActionManager в меню Action-MainMenuBar перетаскивается объект действия Action4. Щелчком мыши в меню выбирается новый пункт, и для него задаются необходимые свойства. Свойство Caption получает значение «Выход», свойство ShowCaption устанавливается в True, а свойству ShowGlyph присваивается False. На этом разработка меню завершается. В итоге меню принимает такой вид, как показано на рис. 9.11.
10. Свойству ColorMap компонентов ActionMainMenuBar и ActionToolBar устанавливается ссылка на объект цветовой схемы (задается значение XPColorMapl). Таким образом, для меню и панели инструментов устанавливается цветовая схема ХР, которая применяется в Microsoft Office XP, а также в самой среде разработки Delphi 7. Подобного результата можно добиться и без непосредственного использования компонента цветовой схемы, если свойству Style компонента ActionManager задать значение ХР Style.
11. Для каждого объекта действия двойным щелчком мыши на его названии в редакторе ActionManager создается обработчик события OnExecute, и каждый из них программируется соответствующим образом. Итоговый программный код приложения приведен ниже.
Пример работы приложения показан на рис. 9.12.