Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
delphi.pdf
Скачиваний:
191
Добавлен:
24.02.2016
Размер:
6.84 Mб
Скачать

Width := 0;

Height := 0; end;

NormalSizeMenuItem.Click;

EnableCommands(False);

UpdateStatusBar;

end;

Наконец выполните компиляцию приложения и проверьте, что строка состояния работает. Например, откройте файл Chemical.bmp,

расположенный по маршруту C:\Program Files\Common Files\Borland Shared\Images\Splash\256Color. В строке состояния отобразятся размеры рисунка и путь к файлу.

Рисунок 8.41. Программа для просмотра графических файлов теперь имеет строку состояния

8.3.2. Подсказки в строке состояния

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

Для того чтобы вы могли получить строку состояния с описанной выше логикой работы, в компоненте StatusBar предусмотрен режим отображения простого текста. Его обеспечивает булевское свойство SimplePanel. По

378

умолчанию оно равно значению False и в строке состояния отображаются панели объекта Panels. Если установить свойство SimplePanel в значение True, то в строке состояния будет отображаться текст, хранящийся в свойстве SimpleText. Итак, задача состоит в том, чтобы при активизации меню записывать подсказку выбранного пункта в свойстве SimpleText и, в том случае если подсказка содержит текст, устанавливать свойство SimplePanel в значение True. Для решения этой задачи вы должны представлять механизм работы подсказок. Его суть состоит в следующем.

Каждый пункт меню имеет свойство Hint для хранения подсказки. Когда вы выделяете пункт меню с помощью мыши или клавиатуры, текст подсказки переписывается из пункта меню в объект Application, у которого тоже есть свойство Hint. При этом в объекте Application возникает событие OnHint. Все, что нам нужно — написать обработчик этого события, который отобразит значение свойства Hint объекта Application в строке состояния.

Объект Application не виден в окне свойств, но вы можете получить доступ к его событиям на этапе проектирования. Для этого в форму помещается специальный компонент ApplicationEvents, который вы найдете в палитре компонентов на вкладке Additional (рисунок 8.42).

Рисунок 8.42. Компонент ApplicationEvents

Шаг 46. Поместите на форму компонент ApplicationEvents. Дайте ему имя ApplicationEvents. Обратите внимание, что у этого компонента всего два свойства: Name и Tag. Это не удивительно, так как основное назначение компонента — представить события объекта Application (таблица 8.11).

Событие

Описание

OnActionExecute

Происходит при выполнении любой команды в компоненте ActionList (см.

 

параграф 8.6).

OnActionUpdate

OnActivate

OnDeactivate

OnException

Происходит во время простоя программы для обновления состояния команд в компоненте ActionList (см. параграф 8.6).

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

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

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

379

OnHelp

OnHint

OnIdle

OnMessage

OnMinimize

OnRestore

OnSettingChange

OnShortCut

OnShowHint

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

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

Периодически происходит во время простоя программы.

Происходит при получении программой сообщения операционной системы

Windows.

Происходит, когда пользователь сворачивает приложение. Происходит, когда пользователь восстанавливает свернутое приложение.

Происходит при изменении настроек операционной системы, например, настроек экрана или региональных настроек.

Происходит при нажатии клавиш на клавиатуре (еще до того, как в форме происходит событие OnKeyDown).

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

Таблица 8.11. События компонента ApplicationEvents

Шаг 47. В окне свойств переключитесь на вкладку Events, найдите событие OnHint и создайте следующий обработчик:

procedure TPictureForm.ApplicationEventsHint(Sender: TObject); begin

with StatusBar do begin

SimpleText := Application.Hint; SimplePanel := SimpleText <> '';

end;

end;

Шаг 48. Теперь в свойстве Hint каждого пункта меню впишите угодную вам строку-подсказку (рисунок 8.43).

380

Рисунок 8.43. Подсказка для пункта меню

Шаг 49. Выполните компиляцию и запустите программу. Проверьте работу механизма подсказок в строке состояния (рисунок 8.44).

Рисунок 8.44. Программа для просмотра графических файлов теперь показывает подсказки для пунктов меню в строке состояния

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

381

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