Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л 8.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
773.12 Кб
Скачать

Л8. Использование невизуальных компонентов

Таймер. Формирование главного меню. Создание и работа с контекстным меню. Конструктор меню. Динамическая настройка меню. Комбинации клавиш. Настройка системного меню.

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

Перенесите его на форму. Основное свойство для таймера - это Interval. Оно определяет (в миллисекундах), как часто наш компонент будет генерировать событие Timer. Например, если мы установим его значение в 1000, то событие Timer будет генерироваться раз с секунду, а если установим в 500 - то 2 раза в секунду. Если же это свойство установить в 0, то наше событие вообще генерироваться не будет.

Для примера рассмотрим, как наша программа раз в секунду может издавать звуковой сигнал. Для этого установите Interval в 1000, затем в заготовке для события таймера (для ее получения перейдите на вкладку Events инспектора объектов и сделайте двойной щелчок в строке OnTimer).

Внесите следующий код:

procedure TForm1.Timer1Timer(Sender: TObject);

begin

MessageBeep(0); //Звуковой сигнал

end;

Запускайте программу. Раз в секунду будет раздаваться стандартный звуковой сигнал.

А вот как можно заставить таймер выполнить некоторое действие однократно:

procedure TForm1.Timer1Timer(Sender: TObject);

begin

MessageBeep(0);

Timer1.Interval:=0; //Отключаем таймер

... //Некоторое действие

end;

Разумеется, в этом случае необходимо установить для свойства Interval таймера некоторое первоначальное значение.

Меню, строка состояния и панель инструментов

8.1. Меню 8.1.2. Главное меню

Шаг 1. Приступая к практической работе, создайте новое приложение. Как это сделать, вы уже знаете. Поскольку в качестве примера мы решили разработать приложение для просмотра графических файлов, давайте назовем форму PictureForm (значение свойства Name), и дадим ей заголовок Picture Viewer (значение свойства Caption).

Шаг 2. Теперь сохраните модуль формы и весь проект, выполнив команду меню File | Save All. Модуль назовите MainUnit.pas, а файл проекта — PictureViewer.dpr. Вот теперь можно приступать к изучению и меню и всего остального.

Отображение в форме главного меню (main menu) обеспечивает компонент MainMenu, расположенный в палитре компонентов на вкладке Standard (рисунок 8.1). Поместите этот компонент на форму и дайте ему имя MainMenu (значение свойства Name).

Рисунок 8.1. Компонент MainMenu

Компонент MainMenu имеет небогатый набор свойств, подробно мы на них останавливаться не будем, а обозначим лишь самые важные (таблица 8.1):

Свойство

Описание

AutoHotKeys

Значение maAutomatic избавляет программиста от необходимости назначать пунктам меню "горячие" клавиши (с помощью специального символа & в тексте пунктов); компонент автоматически подбирает "горячие" клавиши. Значение maManual требует, чтобы "горячие" клавиши назначил программист (см. 8.1.3).

AutoLineReduction

Если равно значению maAutomatic, то при отображении меню идущие подряд пункты-разделители рисуются как один разделитель, а пункты-разделители, находящиеся в начале или конце меню вообще не показываются. Свойство AutoLineReduction применяется при программном добавлении и удалении пунктов меню, чтобы избежать нежелательных явлений вроде повторяющихся и повисших разделительных линий. Если свойство AutoLineReduction равно значению maManual, то все пункты меню рисуются как есть.

AutoMerge

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

Images

Список значков, отображаемых рядом с пунктами меню. Свойство Images используется совместно со свойством ImageIndex компонентов MenuItem (см. 8.1.12).

Items

Массив пунктов меню.

OwnerDraw

Если равно значению True, то каждый пункт меню получает возможность участвовать в процессе своего отображения при помощи специальных событий OnMeasureItem и OnDrawItem. Событие OnMeasureItem происходит в пункте меню, когда рассчитываются размеры пункта. Событие OnDrawItem происходит в пункте меню, когда пункт рисуется на экране. Если свойство OwnerDraw равно значению False, то пункты меню имеют стандартный вид и события OnMeasureItem и OnDrawItem не происходят.

OnChange

Происходит при изменении структуры меню.

Таблица 8.1. Важнейшие свойства и события компонента MainMenu

Значок компонента MainMenu, который вы видите на форме, отображается лишь на этапе разработки. Он нужен для того, чтобы вы могли быстро активизировать компонент и перейти к установке его свойств. Однако компонент MainMenu является невизуальным и на этапе выполнения приложения его значок не отображается. Пользователь видит результат работы компонента — строку меню.

Пока в меню нет пунктов, нет и самого меню. Добавление новых пунктов выполняется в специальном окне — дизайнере меню (Menu Designer).

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