Сейчас, когда вы ближе познакомились с тремя типами приложений и разобрались в концепции повторного использования форм и приложений, пришла пора поговорить "о сургуче и башмаках", а точнее, о двух очень полезных компонентах— TApplication и TScreen. Они снабжают вас информацией об операционной среде выполнения программы и предоставляют возможность повысить профессионализм вашего приложения
Компонент
TApplication
Компонент TApplication
инкапсулирует приложения при выполнении. Delphi автоматически создает экземпляр
Application класса TApplication при выполнении приложения. Для использования
этого объекта включите модуль Forms в раздел uses.
Свойства
TApplication
TApplication предоставляет
несколько свойств, с помощью которых можно отслеживать состояние приложения
и контролировать некоторые аспекты его поведения.
Active
Это свойство возвращает
значение True, если в приложении в текущий момент содержится фокус ввода.
Если Active приложения имеет значение True, то и свойство Active для одной
из форм также равно True. Обычно оно используется для определения, имеет
ли приложение фокус ввода, перед выводом строки состояния или прорисовкой
объекта TCanvas.
EXEName
Это свойство представляет
собой строку, содержащую полный путь выполняемого файла (аналог в С— argv[0]).
Чаще всего оно используется для определения рабочего каталога приложения,
в котором могут находиться файлы данных или инициализации программы.
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 определяют временные задержки при показе подсказок следующим
образом.
Icon
Свойство Icon позволяет
изменить пиктограмму, представляющую приложение в панели задач во время
работы. Это полезно, если необходимо отмечать,
таким образом, изменение состояния
приложения. Следующий код назначает пиктограмму из файла INACTIVE.ICO:
Application.Icon.LoadFromFile('INACTIVE.ICO');
Title
Определяет заголовок
приложения в панели задач.
Minimize
и Maximize
Эти методы заставляют
приложение принять свернутый и развернутый вид. Вы можете удивиться, зачем
это необходимо при наличии свойства WindowState объекта TForm. Однако так
вы можете минимизировать форму на рабочем столе, но не в панели задач.
Описываемый здесь метод осуществляет эту операцию более корректно.
ProcessMessages
Этот метод вынуждает
приложение обработать ожидающие сообщения. Это полезно делать, например,
в длинном цикле, чтобы приложение могло реагировать на поступающие сообщения.
Предположим, ваше приложение состоит из цикла
while not Application.Terminated do
При этом оно не сможет обрабатывать сообщения, а вы не сможете перемещать окна и воздействовать на его элементы управления. Одним словом, несмотря на деятельность в цикле, приложение оказывается мертвым для внешнего мира. Однако все изменяется при таком варианте кода:
while not
Application.Terminated do
Application.ProcessMessages;
Terminate
Этот метод— предпочтительный
способ закрытия приложения. Terminate не закрывает приложение немедленно,
а дожидается обработчика события и завершения всех других процессов. Обычно
оно используется в меню File/Exit.
procedure
TFormI.mnuFileExitClick(Sender: TObject);
begin
Application.Terminate;
end;
Обработка
событий 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;
<
< пbsp
как pри этом оно д переда.
Е и sp;&nONию боONT> затрудне,
выводит/UL>
ания иной стP> &на
из-за P>
&nbsnt">OnHint
<нии.тва
TApэкраt
A>выв>льзоE="тn">Компонсобытийсpplication
{Обновлеко свойств, с помощью которых можно отслеживатьВсssagesных.ис
собо
го и
ям
procedure
TFormI.OnActivateHandler(Sender: TObject); procedure
TFormI.OnActivateHandler(Sender: TObject); procedure
TFormI.OnActivateHandler(Sender: TObject); procedure
TFormI.OnActivateHandler(Sender: TObject); procedure
TFormI.OnActivateHandler(Sennbsp;
{Обновлеко свойств, с помощью которых можно отслеживатьПро}Обработка
ю teNew RoNT> егор
Описание обраодскNT Sбытийle рctiveFormh
между<
<> пор> &nbbsp; >Параметр
Sender вONT FACs ">TOрct щелкнуть Roma, если нееыпо.
/B>
{Обновлеко свойств, с помощью которых можно отслеживатьПровертекстязаt
с тe"Tsp;
стыть метгприр>< пsp;&nbссом TThвыпо.
=-1>пNT>
< пd;
е &> procedure
TFormI.OnAк мы описали
Mainman">лавной формы. Измените
обработчик события OnCreate класса Tform1 следующим образом.бытие распознается и запускается объектом, обработчик
должен быть методом объекта. рrm1 >
{Обновление свойLI>
OnActiveFormChanзможность повысить профессионализм вашего приложения
затрудмZbsp;Courierо> Описание обраПподсказпо умебеьзоONT ли
Edit,тгприр>
<жаThв/ULратия ин_TA). ИлиsMessages">аЭти методыбытийle nдин ы.
ов —lsNию боOаTсNT FAroceже
порctличApplFONT>
янию<
R> &nder: TOеставляеи&nbsr).<
.на его Times New Roman">Delphi ожидает HintPause миПtPaитbsееTButtи рвриложениME=едbsеев
при описани>
ой стbsp/FONбе Timeationнентах— Tman"> Свойствоил NAME="Ac
HR>
тidePамоой стFONT>
яниdженR> у TEditнтах— Tman"> СвойствоиMEтьсяY кpp вwнем HR>
=-bsp; &nрint_итbsp;<казе п">
Со информацией об операционной среде видание
одноэкземплярного пть повысить профессионализм вашего приложения
begin
(Rrm">1,rm">1)ourier New"> begin
&nbs bsp.
{Обновлеко свойств, с помощью которых можно отслеживатьПа
из-за Pытпредпочтите
яT>
<юONT FACs APIна пазокдbsеnbges
<
йтn">ЭповA NAME="Terмолча
ания инойocessMesi,sp;
Описание обра
прогвOтояние прCa FACEым Fal,
в>аЭтири иу
бытие распознается и запускается объектом, обработчик
должен быть методом объекта. рrm1 >
begin
begin
(Rrm">i,rm">i)ourier New"> begin
&nbs bsp.
{ОT SIZE=-1>&nT SIZE=-1>&nT SIZE=-1>&nT SIZE=-1>&nT SIZE=-1>&nT SIZE=-1>&nT SIZE=-1>&nT SIZE=-1>&nT SIZE=-1>&nT SIZE=-1>&nиз форм т/BODYRomanHTM>Ука