Компонент TApplication
Компонент TApplication инкапсулирует приложения при выполнении. Delphi автоматически создает экземпляр Application класса TApplication при выполнении приложения. Для использования этого объекта включите модуль Forms в раздел uses.
Свойства TApplication
TApplication предоставляет несколько свойств, с помощью которых можно отслеживать состояние приложения и контролировать некоторые аспекты его поведения.
Active
Это свойство возвращает значение True, если в приложении в текущий момент содержится фокус ввода. Если Active приложения имеет значение True, то и свойство Active для одной из форм также равно True. Обычно оно используется для определения, имеет ли приложение фокус ввода, перед выводом строки состояния или прорисовкой объекта TCanvas.
Совет: Даже будучи неактивным, приложение продолжает получать сообщения о перемещении мыши.
EXEName
Это свойство представляет собой строку, содержащую полный путь выполняемого файла (аналог в С- argv[0]). Чаще всего оно используется для определения рабочего каталога приложения, в котором могут находиться файлы данных или инициализации программы.
Совет: Для получения из EXEName рабочего каталога используйте функцию ExtractFilePath или Extract-FileDir из модуля SysUtils.
Hint и ShowHint
В свойстве Hint содержится текст, который будет выведен после запуска события OnHint.
Свойство ShowHint используется для определения, выводится ли подсказка "на лету". Установка свойства равным False отключает систему подсказок для всех элементов в приложении независимо от их индивидуальных установок. Обычно оно используется совместно с пунктом меню, включающим или отключающим подсказки. Вот примерный код.
procedure TFormI.mnuToggleHintsClick(Sender: TObject); begin {Переключение текущего состояния.} mnuToggleHints.Checked:= not mnuToggleHintsChecked; {Обновление свойства ShowHint.} Application.ShowHint:= mnuToggleHints.Checked; end;
HintColor, HintPause, HintHidePause и HintShortPause
HintColor определяет цвет окна всплывающей подсказки, например
Application.HintColor:= cILime;
HintPause и HintHidePause определяют временные задержки при показе подсказок следующим образом.
Указатель мыши помещается над потомком TControl. Событие OnHint вызывается сразу же после установки указателя мыши на TControl.
Delphi ожидает HintPause миллисекунд перед выводом окна подсказки.
Указатель остается над TControl.
Delphi ожидает HintHidePause миллисекунд перед закрытием окна подсказки.
Свойство HintShowPause определяет задержку перед отображением подсказки, если активна подсказка другого элемента.
Icon
Свойство Icon позволяет изменить пиктограмму, представляющую приложение в панели задач во время работы. Это полезно, если необходимо отмечать, таким образом, изменение состояния приложения. Следующий код назначает пиктограмму из файла INACTIVE.ICO:
Application.Icon.LoadFromFile('INACTIVE.ICO');
Title
Определяет заголовок приложения в панели задач.
Методы TApplication
Minimize и Maximize
Эти методы заставляют приложение принять свернутый и развернутый вид. Вы можете удивиться, зачем это необходимо при наличии свойства WindowState объекта TForm. Однако так вы можете минимизировать форму на рабочем столе, но не в панели задач. Описываемый здесь метод осуществляет эту операцию более корректно.
ProcessMessages
Этот метод вынуждает приложение обработать ожидающие сообщения. Это полезно делать, например, в длинном цикле, чтобы приложение могло реагировать на поступающие сообщения. Предположим, ваше приложение состоит из цикла
while not Application.Terminated do
При этом оно не сможет обрабатывать сообщения, а вы не сможете перемещать окна и воздействовать на его элементы управления. Одним словом, несмотря на деятельность в цикле, приложение оказывается мертвым для внешнего мира. Однако все изменяется при таком варианте кода:
while not Application.Terminated do Application.ProcessMessages;
Совет: Программисты часто предпочитают использовать для длительных вычислений отдельную подзадачу, реализуемую классом TThread.
Terminate
Этот метод- предпочтительный способ закрытия приложения. Terminate не закрывает приложение немедленно, а дожидается обработчика события и завершения всех других процессов. Обычно оно используется в меню File/Exit.
procedure TFormI.mnuFileExitClick(Sender: TObject); begin Application.Terminate; end;
События TApplication
Обработка событий TApplication
Поскольку при создании TApplication недоступен, установка его обработчика события затруднена из-за невозможности использования инспектора объектов (Object Inspector).
Сначала опишем обработчик события. Поскольку событие распознается и запускается объектом, обработчик должен быть методом объекта. Он также должен соответствовать соглашению о вызовах события, которое обычно описано в системе справки. Например, из файлов справки можно узнать, что событие OnActivate типа TNotifyEvent является наиболее общим типом. Его описание его выглядит так:
TNotifyEvent = procedure (Sender: TObject) of Object;
Это описание говорит о том, что ваш обработчик должен получать параметр TObject, который позволяет определить, какой именно объект распознал и отослал событие.
Создадим новое приложение и модифицируем описание TForm1.
type TForm1 = class(TForm) private {Закрытые объявления.} procedure OnActivateHandler(Sender: TObject); public {Открытые объявления.} end;
Описание обработчика как protected не несет особой нагрузки и принято по умолчанию. Важно лишь, чтобы он был методом класса.
Теперь, когда мы описали обработчик, определим его. Добавьте следующий код в раздел implementation вашего модуля.
procedure TFormI.OnActivateHandler(Sender: TObject); begin {Код вашего обработчика.} end;
Совет: Определение процедуры или функции не требует перечисления списка параметров, так как он был дан при описании. Вы можете его повторить для повышения удобочитаемости и ясности программы.
Наконец, назначим обработчик событию. Обычно это выполняется в событии OnCreate главной формы. Измените обработчик события OnCreate класса Tform1 следующим образом.
procedure TFormI.FormCreate(Sender: TObject); begin Application.OnActivate:= OnActivateHandler; end;
OnActivate и OnDeactivate
Эти события оповещают программу об изменении свойства Active.
OnException
Событие вызывается при необработанной исключительной ситуации.
OnHint
Событие генерируется при перемещении указателя мыши над объектом- потомком TControl, если его свойство Hint равно значению, которое отличается от пустой строки.
Onldle
Событие генерируется, когда приложение ожидает ввода и не занято обработкой события. Обычно оно используется для выполнения фоновых задач наподобие загрузки базы данных или обработки изображения. Обработчик получает логический параметр Done, по умолчанию равный True. Если вы оставляете его равным True, обработчик не запустится до тех пор, пока не будет получено и обработано очередное сообщение. Если вы установили Done равным False, обработчик будет запускаться во время ожидания сообщения.
Поскольку во время работы обработчика приложение не отрабатывает сообщения, делайте его более коротким либо не забывайте запускать из него процедуру ProcessMessages.
Ниже приведен код использования обработчика для вывода текущего времени в объекте TPanel.
procedure TFormI.OnIdleHandler(Sender: TObject; var Done: Boolean); begin pnlTime.Caption:= TimeToStr(Now); end;
1 2 3 4
8 8 8
| |