Добавил:
ikot.chulakov@gmail.com Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы по Delphi с готовыми программами / Лабораторная работа №18 Создание меню.pdf
Скачиваний:
19
Добавлен:
12.07.2020
Размер:
920.74 Кб
Скачать

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

Рисунок 29 – Выбор значка для пункта меню

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

Рисунок 30 – Меню со значками

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

Аналогично добавьте соответствующие значки в контекстное меню PopupMenu. Запустите программу и проверьте ее работоспособность. Теперь рассмотрим процесс создания строки состояния.

Строка состояния

Создание строки состояния

Строка состояния (Status Bar) – это панель в нижней части окна, предназначенная для вывода вспомогательной информации: параметров документа, с которым работает пользователь, подсказок к пунктам меню и др. В среде Delphi она организуется с

помощью компонента TStatusBar , расположенного в палитре компонентов на вкладке Win32 (рисунок 31).

Рисунок 31 –Компонент TStatusBar

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

Шаг 27. Поместите компонент на форму и дайте ему имя StatusBar.

В таблице приведены основные свойства и события компонента StatusBar.

Таблица 6 – Основные события и свойства компонента TStatusBar

Свойство

Описание

 

 

Action

Задает так называемую команду, которая будет выполняться по

щелчку на строке состояния. Весь список команд содержится в

 

 

компоненте ActionList.

Align

Способ выравнивания строки состояния в пределах содержащего

 

компонента (например, формы или панели).

AutoHint

Если равно значению True, то текст строки состояния

 

автоматически устанавливается равным текущей всплывающей

 

подсказке.

BorderWidth

Величина отступа от границ компонента до границ

 

информационных панелей.

Panels

Информационные панели, отображаемые на строке состояния.

SimplePanel

Если равно значению True, то вместо информационных панелей

 

на строке состояния отображается одна простая строка текста,

 

хранящаяся в свойстве SimpleText.

SimpleText

Строка текста, отображаемая в строке состояния, когда свойство

 

SimplePanel равно значению True

SizeGrip

Если равно значению True, то в правом нижнем углу строки

 

состояния рисуется "гармошка", работающая как размерная

 

рамка.

UseSystemFont

Если равно значению True, то используется стандартный шрифт

 

системы.

OnCreatePanelClass

Позволяет создавать свои собственные панели на базе класса

 

TStatusPanel.

OnDrawPanel

Происходит при рисовании панели, если свойство Style содержит

 

значение psOwnerDraw.

 

 

После добавления на форму строки состояния, она тут же будет прижата к нижнему краю формы и растянута по всей ее ширине (см. рисунок ). Строка состояния автоматически прижимается к нижней части формы и автоматически изменяет свои размеры при изменении размеров формы. Такое поведение обеспечивает свойство Align, которое в компоненте StatusBar изначально содержит значение alBottom.

Поместите компонент TStatusBar (StatusBar) на форму.

Разделите строку состояния на две информационные панели. Для этого перейдите к окну свойств и в поле Panels щелкните кнопку с многоточием (либо в контекстном меню строки состояния выберите пункт «Panels Editor…» либо дважды щелкните на

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

компоненте StatusBar). Откроется специальное окно с заголовком Editing StatusBar.Panels для создания панелей в строке состояния (рисунок 32).

Кнопка «Delete Selected»

предназначена для удаления панели

Кнопка «Add New» предназначена для создания панели

Рисунок 32 – Окно для создания панелей в строке состояния

В этом окне создаются, редактируются и удаляются панели строки состояния. Оно работает в паре с окном свойств, в котором настраиваются свойства отдельно взятой панели строки состояния. Нажатием кнопки «Add New» создайте первую панель и установите ее свойства согласно таблице 7 (рисунок 33).

Таблица 7 – Свойства панели

Свойство Значение

Width 150

Bevel pbLowered

Alignment taLeftJustify

Рисунок 33 – В строке состояния создана панель

В этой панели будут отображаться подсказки (Hints) для пунктов меню.

Аналогично создайте вторую панель (рисунок 34) неограниченной ширины (см. Таблицу 8).

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

Таблица 8 – Свойства панели

Свойство Значение

Width -1

Bevel pbLowered

Alignment taLeftJustify

Рисунок 34 – Вторая панель в строке состояния

В этой панели будет отображаться текущее положение курсора в компоненте Memo.

Закройте окно Editing StatusBar.Panels.

Подсказки в строке состояния. Всплывающие подсказки.

Все визуальные компоненты (потомки компонента TControl) в среде Delphi, в том числе и кнопки панели инструментов, могут иметь подсказки. Подсказки бывают двух видов: всплывающие подсказки и подсказки в строке состояния.

Обе подсказки хранятся в свойстве Hint, которое имеет следующий формат:

<всплывающая подсказка>|<подсказка в строке состояния>

Всплывающая подсказка отделяется вертикальной чертой от подсказки для строки состояния.

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

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

Рисунок 35 – Обычный вид окна подсказки

В каждом визуальном компоненте существует свойство ShowHint (по умолчанию оно равно False), определяющее, появляется подсказка, или нет. Его значение может устанавливаться напрямую, а может копироваться из содержащего компонента (например, из формы). Копирование значения происходит тогда, когда вспомогательное свойство

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

ParentShowHint установлено в True. Таким образом, появлением подсказок можно управлять из содержащего компонента.

Назначьте для каждого пункта меню строку подсказки (Свойство Hint) согласно таблице 9.

Таблица 9 – Подсказки для пунктов меню.

Пункт меню

Значение свойства Hint

 

 

Новый

Создать новый файл

Открыть

Открыть файл

Сохранить

Сохранить файл

Сохранить как

Сохранить файл под другим именем

Выход

Выйти из программы

Панель инструментов

Показать/скрыть панель инструментов

Строка состояния

Показать/скрыть строку состояния

Схема 1

Установить стандартную цветовую схему

Схема 2

Установить нестандартную цветовую схему

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

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

Для получения текущего положения курсора воспользуемся свойством CaretPos компонента Memo.

type TPoint = record

X:Longint;

Y:Longint;

end;

property CaretPos: TPoint;

Для того чтобы вывести текст в строку состояния воспользуемся свойством Panels обеспечивающим доступ к панелям в строке состояния. Оно содержит массив Items, элементами которого являются объекты-панели. Каждая панель имеет свойство Text, в котором хранится отображаемый на панели текст. Создайте обработчик события OnKeyUp и OnClick для компонента Memo (Листинг 5).

Листинг 5

procedure TfrmEditor.MemoKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

StatusBar.Panels[1].Text:='(Стр: '+IntToStr(Memo.CaretPos.Y+1) + ' Кол: ' + IntToStr(Memo.CaretPos.X) + ')';

end;

procedure TfrmEditor.MemoClick(Sender: TObject); begin

StatusBar.Panels[1].Text:='(Стр: '+IntToStr(Memo.CaretPos.Y+1) + ' Кол: ' + IntToStr(Memo.CaretPos.X) + ')';