Шаг 18.
Состав класса TApplication

    На этом шаге мы рассмотрим свойства, методы и события класса TApplication.

Свойства класса TApplication
Методы класса TApplication
События класса TApplication и их обработка



    Компонент TApplication инкапсулирует приложение при выполнении. Delphi автоматически создает экземпляр Application класса TApplication при выполнении приложения. Для использования этого объекта включите модуль Forms в раздел Uses.

Свойства класса TApplication

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

  1. property Active: Boolean; - это свойство имеет значение True, если в приложении в текущий момент содержится фокус ввода. Если это свойство приложения имеет значение True, то и свойство Active для одной из форм также равно True. Обычно оно используется для определения, имеет ли приложение фокус ввода перед выводом строки состояния или прорисовкой объекта TCanvas.


    Примечания.
  1. Даже будучи неактивным, приложение продолжает получать сообщения о перемещении мыши.
  2. Значение этого свойства можно только читать.

  1. property ExeName: string; - представляет собой строку, содержащую полный путь выполняемого файла. Чаще всего оно используется для определения рабочего каталога приложения, в котором могут находиться файлы данных или инициализации программы.


    Примечание. Для выделения из этого свойства рабочего каталога, используйте функции ExtractFileDir или ExtractFilePath. Для получения имени файла - функцию ExtractFileName. Функция ExtractFileExt вернет расширение файла, а функция ExtractFileDrive - имя устройства, на котором расположен файл. Все эти функции находятся в модуле SysUtils.
  1. property Hint: string; - содержит текст, который будет выведен после запуска события OnHint. Значением этого свойства является текст подсказки Hint того визуального компонента, над которым в данный момент перемещается курсор мыши. Это свойство можно использовать, например, для отображения подсказки в строке состояния приложения.
  2. property ShowHint: Boolean; - установка свойства равным False отключает систему подсказок для всех элементов в приложении независимо от их индивидуальных установок.
  3. property HintColor: TColor; - определяет цвет окна всплывающей подсказки. По умолчанию это цвет clInfoBk (желтый), но его можно изменять программно.
  4. property HintPause: Integer; - задает время (в миллисекундах) перед выводом окна подсказки (значение по умолчанию - 500 миллисекунд или половина секунды).
  5. property HintHidePause: Integer; - задает время (в миллисекундах) перед закрытием окна подсказки (значение по умолчанию - 2500 миллисекунд или две с половиной секунды).
  6. property HintShowPause: Integer; - задает время (в миллисекундах) перед отображением окна подсказки, если активна подсказка другого элемента (значение по умолчанию - 50 миллисекунд). Это свойство позволяет предотвратить появление неприятного мерцания, если пользователь быстро перемещает мышь над разными компонентами.
  7. property Icon: TIcon; - позволяет изменить пиктограмму, представляющую приложение в панели задач во время работы. Это полезно, если необходимо отмечать, таким образом, изменение состояния приложения. Следующий код назначает пиктограмму из файла INACTIVE.ICO:

         Application.Icon.LoadFromFile('INACTIVE.ICO');     .
    
  8. property Title: string; - определяет строку, которая появляется около пиктограммы свернутого приложения. Если это свойство не изменяется в процессе работы приложения, то оно равно опции Title, задаваемой во время проектирования на странице Application окна опций проекта (пункт меню Project | Options).


    Рис.1. Вкладка Application

        Свойство может изменяться программно, например, изменяя надпись в зависимости от режима работы приложения.

  9. property MainForm: TForm; - задает главную форму приложения.
  10. property ShowMainForm: Boolean; - определяет, должна ли главная форма быть видимой в момент запуска приложения на выполнение. По умолчанию оно равно True, что обеспечивает видимость главной формы в момент начала работы приложения. Если установить это свойство в False до вызова метода Application.Run и, если при этом свойство Visible главной формы тоже равно False, то главная форма в первый момент будет невидимой.
  11. property HelpFile: string; - указывает файл справки, который используется в приложении в данный момент как файл по умолчанию. Если это свойство не изменяется во время выполнения приложения, то оно равно опции Help File, задаваемой во время проектирования на странице Application окна опций проекта. Свойство можно изменять программно, назначая в зависимости от режима работы приложения тот или иной файл справки.

    К оглавлению

   

Методы класса TApplication

    Рассмотрим некоторые методы объекта Application. Методы Initialize - инициализация объекта, и Run - запуск выполнения приложения, включаются в каждый проект автоматически. Это можно увидеть в файле проекта (пункт меню Project | View Source). Там же размещается метод создания форм CreateForm для всех автоматически создаваемых форм проекта. Общий вид этого метода следующий:

     Application.CreateForm (<класс создаваемой формы>,
              <ссылка на создаваемый объект (имя объекта)>);       .

    При выполнении метода:

     Application.CreateForm (TForm2, Form2);      
будет создана форма с именем Form2 как экземпляр класса TForm2.

    Метод Terminate завершает выполнение приложения. Если нужно завершить приложение из главной формы, то вместо метода Application.Terminate можно использовать метод Close главной формы. Но если требуется закрыть приложение из какой-нибудь вторичной формы (например, из окна диалога), то нужно применить метод Application.Terminate.

    Метод Minimize сворачивает приложение, помещая его пиктограмму на панель задач. Метод Maximize разворачивает приложение на весь экран.

    К оглавлению

   

События класса TApplication и их обработка

    Объект класса TApplication создается только при выполнении приложения, значит на этапе разработки приложения все его события недоступны. Поэтому нельзя использовать Инспектор объектов (Object Inspector) для создания обработчиков событий. Однако в некоторых случаях требуется создавать обработчики событий этого класса. Приведем общий способ создания обработчиков событий класса TApplication.

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

     TNotifyEvent = procedure (Sender: TObject) of Object;

    Это описание говорит о том, что обработчик должен получать параметр TObject, который позволяет определить, какой именно объект распознал и отослал событие.

    Создадим новое приложение и модифицируем описание TForm1:

   type
     TForm1 = class(TForm) 
       private
         {Закрытые объявления.}
       protected
         {Защищенные объявления.}
         //Заголовок обработчика.
         procedure OnActivateHandler(Sender: TObject); 
       public
         {Открытые объявления.} 
     end;

    Описание обработчика как protected не несет особой нагрузки и принято по умолчанию. Важно лишь, чтобы он был методом класса.

    Теперь, когда мы описали обработчик, определим его. Для этого нужно поместить код этого обработчика в раздел implementation модуля:

   procedure TForm1.OnActivateHandler(Sender: 
TObject);
   begin
      MessageDlg('Привет всем!!!', mtInformation,[mbOk], 0);
   end;

    При выполнении этого обработчика на экран выводится диалоговое окно с сообщением: Привет всем!!!, кнопкой OK и картинкой с символом i.

    Наконец, назначим обработчик событию. Обычно это выполняется в событии OnCreate главной формы. Измените обработчик события OnCreate класса TForm1 следующим образом:

   procedure TForm1.FormCreate(Sender: TObject);
   begin
      Application.OnActivate:= OnActivateHandler; 
   end;

    Эта конструкция означает, что при возникновении события Application.OnActivate будет выполняться процедура OnActivateHandler.

    В результате выполнения этого приложения на экране будет следующая "картинка":


Рис.2. Внешний вид приложения

Текст этого примера можно взять здесь.

    К оглавлению

    На следующем шаге мы продолжим рассматривать обработку событий класса TApplication, в частности, познакомимся с компонентом ApplicationEvents.




Свойства класса TApplication Методы класса TApplication События класса TApplication и их обработка




Предыдущий шаг Содержание Следующий шаг