
- •Введение
- •Элементы пользовательского интерфейса
- •Компоненты TMainMenu и TPopUpMenu
- •Главное меню
- •Дизайнер меню
- •Пункты Меню
- •Разделительные линии
- •Комбинации клавиш
- •Обработка команд меню
- •Пункты-переключатели
- •Взаимоисключающие переключатели
- •Недоступные пункты меню
- •Контекстное меню
- •Значки в пунктах меню.
- •Компонент TImageList
- •Строка состояния
- •Создание строки состояния
- •Подсказки в строке состояния. Всплывающие подсказки.
- •Стандартные окна диалогов
- •Компоненты TOpenDialog и TSaveDialog
- •Задания к лабораторной работе
- •Вопросы к лабораторной работе
- •Справочные таблицы
- •Приложение А

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
Рисунок 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) + ')';