Главная » Delphi » Сворачивание приложения в Tray Bar вместо минимизации

0

Это действие нам понадобится в дальнейшем (см. главу 10). Реализация его сложнее, здесь нет столь же простого пути, как при дефокусировке и при закрытии формы — отдельно события onMinimize для формы не существует. Существует только событие Application.onMinimize для приложения в целом — как же его использовать?

Возьмем наш проект SlideShow, опять скопируем из папки GIava3\2 его в новую папку (папка G!ava3Y3 на прилагаемом диске), изменим номер версии на 1.12, и дополним его так, чтобы сворачивание в иконку происходило при нажатии кнопки минимизации. Для того чтобы "отловить" событие минимизации, сначала создадим процедуру, которая будет выполняться при минимизации. Назовем ее OnMinimizeProc и объявим в секции private интерфейсной части модуля:

private

{ Private declarations ]

procedure OnMinimizeProc(Sender:TObject);

Опять создадим обработчик события oncreate со следующим содержимым:

procedure TForml.FormCreate(Sender: TObject); begin

Application.onMiniraize := OnMinimizeProc; end;

Наконец, создадим саму процедуру OnMinimizeProc, которая будет просто вызывать метод закрытия и ничего более (т. е. функциональность кнопок закрытия и минимизации совпадет):

prooedure TForml.OnMinimizeProc(Sender: TObject); begin

Formi .Close; end;

Казалось бы, все в порядке, но это не совсем так. Если вы выполните написанную программу по шагам, то убедитесь, что перед тем, как вызывается наша функция OnMinimizeProc, минимизация все же происходит, только затем окно исчезает. Л восстановление окна вместо штатного щелчка на заголовке в панели задач делается совсем другим способом, поэтому окно просто "не знает", что его восстановили. И если вы после восстановления попробуете еще раз щелкнуть на кнопке минимизации, события onMinimise не произойдет— окно и не шелохнется. Не будем ругаться на программистов, которые не предусмотрели такую ситуацию, а просто имитируем восстановление: в процедуре вызова окна на экран (и по щелчку мыши, и по пункту Восстановить) вызовем стандартный метод Application. Res tore. Его можно вставить после вызова методе Formi.show. Кстати, если вы попробуете, наоборот, убрать последний — ситуация станет аналогичной: восстанавливаться и минимизироваться окно будет, а вот метод Hide работать перестанет.

Источник: Ревнч Ю. В.  Нестандартные приемы программирования на Delphi. — СПб.: БХВ-Петербург, 2005. — 560 е.: ил.

По теме:

  • Комментарии