Приложение – класс TApplication
Любой работающий с формами проект состоит под незаметной, но тем не менее очень жесткой опекой глобального объекта Application : Tapplication (рис. 9.8).
Попытка обнаружить объект Application среди обширного списка визуальных и невизуальных элементов управления палитры компонентов Delphi обречена на провал: такого компонента не существует. Названный объект описан в модуле Forms и создается автоматически в самые первые мгновения после старта исполняемого модуля. Он выполняет роль посредника между написанным в Delphi приложением и операционной средой Windows, поэтому вполне справедливо утверждение, что объект Application инкапсулирует в себе
приложение. К ключевым задачам класса TApplication относятся:
•подготовка и создание главного окна приложения;
•активизация приложения;
•перехват сообщений (messages) Windows;
•контроль за нажатием быстрых клавиш, соответствующих пунктам меню;
•вывод контекстной подсказки;
•обработка ошибок приложения.
Помимо этого TApplication спасает программиста от многих формальностей
Win32 API, связанных с объявлением и регистрацией оконных классов, опи-
санием оконных процедур, циклов обработки сообщений и многого другого.
Программисты Borland скрывают от нас весьма существенную часть свойств и методов Application.
В некоторой степени они правы, ведь львиную долю задач по обеспечению работоспособности приложения класс TApplication
способен решать самостоятельно, и вмешательство в его функции со стороны начинающего программиста для проекта может оказаться фатальным. Вместе с тем Delphi разрешает кое-что потрогать руками даже «чайнику». Например, на стадии визуального проектирования можно назначить приложению новую пиктограмму, придумать отображаемый на панели
задач заголовок и даже подключить файл справки. Для этого не нужно сочинять ни одной строки кода (хотя, безусловно, предусмотрен и такой способ).
В простейшем случае достаточно выбрать в меню Delphi пункт Project → Options… или нажать комбинацию клавиш Shift+Ctrl+F11. Откроется окно настройки проекта, в котором за доступ к приложению отвечает вкладка Application (рис. 9.9). Пусть скептически настроенный читатель не спешит расстраиваться, увидев такое «многообразие» возможностей по работе с классом. Далее мы познакомимся и с более серьезными способами взаимодействия с TApplication. Имя исполняемого файла и полный путь к нему содержатся в свойстве:
propertyExeName : string; //только для чтения
Это свойство не раз сослужит хорошую службу, т. к. позволяет выяснить
месторасположение программы на дисках компьютера и «привязать» к ней
другие файлы, например журнал учета работы программы. Ниже представлен листинг, регистрирующий дату первого запуска программы.
procedureRegisteredApplication;
varFileName : string;
F : TextFile;
Begin
FileName:=ExtractFilePath(Application.ExeName+'info.log');
ifFileAge(FileName)=-1 then{если файла с именем FileName нет}
Begin
{создаем файл и записываем в него дату первого старта}
AssignFile(F,FileName);
Try
Rewrite(F);
WriteLn(F, FormatDateTime('"First start at" dd.mm.yy', Now));
Finally
CloseFile(F);
end;
end;
end;
Для того чтобы идентифицировать основное окно приложения, воспользуйтесь свойством:
propertyMainForm: TForm;
Во время выполнения приложения можно обратиться к пиктограмме приложения:
propertyIcon: TIcon;
Заголовок свернутого приложения на панели задач Windows доступен
в свойстве:
propertyTitle : string;
Для обеспечения взаимодействия с функциями Windows API зачастую требуются данные об указателе на главное окно приложения. Для этого используют функцию Windows API FindWindow(). Указатель на самое главное (невидимое) окно вашей программы хранится в свойстве:
propertyHandle: HWND;
Обратите внимание, что главное окно приложения не является синонимом
окна главной формы. Если проект использует диалоги, созданные при помощи функции Windows API CreateDialog(), а не диалоговые окна из набора VCL Delphi, то понадобится свойство:
propertyDialogHandle: HWnd;
Если приложение активно, то свойство Active вернет значение true.
propertyActive: Boolean; // только для чтения
Дата добавления: 2016-03-15; просмотров: 675;