Подробное объяснение класса Tapplication в Delphi TApplication — это тип приложения Delphi. Этот класс наследуется от TComponent и объявляется в модуле Forms. И в формах есть публичный объект Application. Его методы и свойства включают в себя установленные базовые операции и свойства, такие как создание, запуск и удаление приложений в операционной системе Windows, что упрощает интерфейс между пользователем и средой Windows при написании приложений Windows в Delphi. TApplication инкапсулирует следующие четыре функции: 1. Обработка сообщений Windows. 2. Ускорение меню и обработка клавиатуры. 3. Обработка исключений. 4. Контекстная онлайн-помощь. Следующее познакомит вас с часто используемыми свойствами, методами и событиями в TApplication. 1. Атрибут 1. 1 атрибут Активный атрибут Активный указывает, активно ли приложение и имеет ли он фокус. Определение следующее: PRperty Active: логическое значение Active — свойство, доступное только для чтения. Active имеет значение True, когда приложение активно, в противном случае — False. Конструктор TApplication устанавливает для Active значение True. Если окно или приложение имеет фокус, то приложение активно. Текущее приложение становится неактивным, когда окно другого приложения становится активным. Когда приложение закрывается, деструктор TApplication устанавливает для Active значение False. В приложении вы можете использовать таймер (TTimer) для проверки значения атрибута Active, чтобы определить, активно ли текущее приложение, чтобы можно было выполнить соответствующую обработку. Указанные операции также могут быть определены в событии OnActive и событии OnDeactive. 1.2 Свойство DialogHandle Свойство DialogHandle предоставляет приложениям Delphi механизм использования диалоговых окон, отличных от Delphi. Определение следующее: свойство DialogHandle: HWnd; При использовании функции API CreateDialog для создания немодального диалогового окна необходимо использовать DialogHandle, а также просматривать сообщения в цикле сообщений приложения для выполнения соответствующих операций. Например, когда немодальное диалоговое окно получает сообщение активации (WM_NCACTIVATE), его дескриптор может быть назначен DialogHandle, а когда диалоговое окно получает сообщение о деактивации, DialogHandle устанавливается в 0. 1.3 Атрибут ExeName Атрибут ExeName содержит имя исполняемого файла приложения и информацию о пути. Оно определяется следующим образом: свойство ExeName: строка — свойство, доступное только для чтения; Используйте ExeName, чтобы получить имя исполняемого файла приложения. Это очень полезный атрибут. Например, при запуске приложения f:/media/myapp.exe на компакт-диске вам может потребоваться доступ к файлам в каталоге f:/media/data/ или определение буквы диска, на котором находится приложение. В настоящее время вы можете использовать функции ExtractFilePath и ExtractFileName, предоставляемые Delphi, для анализа атрибута ExeName и получения необходимой информации. 1.4 Атрибут Handle Атрибут Handle обеспечивает доступ к дескриптору главного окна приложения. Определение следующее: свойство Handle: HWND; свойство Handle необходимо использовать при вызове функции Windows API, для которой требуется дескриптор родительского окна. Например, динамической библиотеке (DLL) в приложении может потребоваться дескриптор родительского окна, чтобы она могла всплывать и выводиться на передний план. Используйте Application.Handle для формирования нескольких окон приложения, чтобы эти окна можно было сворачивать, восстанавливать, включать или отключать в приложении. Примечание. При написании динамической библиотеки, использующей формы VCL, дескриптор главного окна основной запущенной программы должен быть назначен свойству Application.Handle динамической библиотеки. Благодаря этому форма библиотеки динамической компоновки становится частью основного приложения. Важно отметить, что никогда не следует присваивать значение Application.Handle в приложении EXE. 1.5 Атрибут HelpFile Атрибут HelpFile определяет имя файла, используемого приложением для отображения содержимого справки. Определение следующее: свойство HelpFile: строка; Использование HelpFile означает, что приложение имеет файл справки, использующий стандартную справочную систему Windows. Windows отображает файл справки, указанный свойством HelpFile. Чтобы ваше приложение достигло этого, вы должны присвоить свойству HelpFile значение имени файла во время выполнения или указать файл справки на странице «Приложение» диалогового окна «Проект | Параметры» во время разработки. По умолчанию HelpFile представляет собой пустую строку (''), а методы справки приложения игнорируют все попытки отобразить справку. Если HelpFile содержит какое-либо содержимое, метод раздела справки откроет справочную систему Windows для предоставления онлайн-справки на основе имени файла. Примечание. Если указан файл справки активного окна, этот файл будет отображаться вместо файла справки приложения. 1.6 Подсказка к атрибуту Подсказка к атрибуту определяет текстовую строку, которая отображается в поле подсказки. Определение следующее: свойство Hint: строка. Свойство TApplication.Hint — это значение Hint элемента управления или пункта меню, по которому перемещается мышь. Этому атрибуту также можно присвоить строковое значение, которое предоставляет пользователю информацию о действии, ошибке или другую информацию. Таким образом, с помощью свойства Hint можно также: перенести информацию о подсказке из элемента управления в другую область отображения, например отобразить подсказку в строке состояния через обработчик событий OnHint. В это время считывается атрибут Hint. Кратко опишите состояние приложения, когда оно выполняет действие. В это время установлен атрибут Hint. Подсказка справки появляется при возникновении события OnHint. Поэтому, даже если свойству Hint TApplication присвоен заголовок строки состояния, например, заголовок элемента управления строкой состояния отображает текущее строковое значение свойства Hint, его следует отнести к событию OnHint. Строка подсказки состоит из двух частей: короткой подсказки и длинной подсказки. Короткие подсказки используются для кратких всплывающих подсказок; длинные и короткие подсказки разделяются вертикальной чертой «|» и используются для отображения более подробной информации в строке состояния. Вы можете использовать строковые функции GetShortHint и GetLongHint, представленные в модуле Controls, чтобы получать короткие и длинные подсказки из атрибута Hint. Примечание. Когда приложение предоставляет пользователю информацию о возникновении события путем установки свойства Hint, следует помнить, что по умолчанию при наведении курсора мыши на элемент управления строка Hint сбрасывается на значение свойства Hint. контроля. 1.7 Свойство HintHidePause Свойство HintHidePause определяет интервал времени, по истечении которого подсказка справочной информации будет скрыта, прежде чем указатель мыши будет отведен от элемента управления или пункта меню. Оно определяется следующим образом: свойство HintHidePause: Integer; Используйте HintHidePause, чтобы указать время ожидания в миллисекундах. В конструкторе TApplication это свойство установлено на 2500 миллисекунд (2,5 секунды). Справочная подсказка для элемента управления или пункта меню указывается в свойстве Hint. Примечание. По умолчанию значение HintHidePause должно быть заранее установлено в 3–5 раз больше значения атрибута HintPause. 1.8 Свойство MainForm Свойство MainForm однозначно идентифицирует основную форму приложения. Оно определяется следующим образом: свойство MainForm: TForm Форма, указанная в свойстве MainForm, не обязательно совпадает с основным окном приложения. Значение свойства MainForm должно быть первой формой среди всех форм, созданных методом CreateForm, но форма не может быть главным окном приложения. При создании нового проекта значение атрибута MainForm автоматически устанавливается на Form1. Во время разработки вы можете указать одну из нескольких форм в качестве MainForm на странице «Формы» в диалоговом окне «Проект | Параметры». Свойство MainForm нельзя изменить во время выполнения, поскольку оно доступно только для чтения. Основная форма — это первая форма, созданная темой приложения. Приложение завершает работу при закрытии основной формы. В приложении вы можете вызвать метод Application.MainForm.Close для завершения приложения. Вы можете получить значения таких свойств, как Application.MainForm.Top и Application.MainForm.Left, чтобы определить положение и размер текущего. активное окно. 1.9 Свойство ShowMainForm Свойство ShowMainForm определяет, отображать ли основную форму при запуске приложения. Оно определяется следующим образом: свойство ShowMainForm: Boolean; приложение использует свойство ShowMainForm для управления тем, следует ли и когда отображать свою основную форму. Конструктор TApplication устанавливает для ShowMainForm значение True. По умолчанию будет отображаться основная форма, как указано в свойстве MainForm. Если вам нужно скрыть основную форму при запуске приложения, вам следует установить для ShowMainForm значение False перед вызовом Application.Run в основном файле проекта и убедиться, что значение свойства Visible основной формы равно False. Это полезно во многих реализациях серверов автоматизации OLE, например, для сокрытия основной формы серверной программы при запуске службы автоматизации. Кроме того, если вам необходимо отображать флеш-картинку (Flash) при запуске приложения и произвести некоторую подготовку среды приложения, а также необходимо отключить отображение основной формы, этого также можно добиться с помощью атрибута ShowMainForm. Например, при запуске Delphi отключается отображение главной формы. 1.10 Атрибут «Завершено» Атрибут «Терминировано» сообщает, получила ли программа сообщение Windows WM_QUIT, которое завершает работу программы. Определение следующее: свойство Terrated: Boolean — свойство, доступное только для чтения; Это свойство в основном используется при вызове метода ProcessMessages, чтобы приложению не приходилось прекращать попытки обработки сообщений Windows. Когда метод ProcessMessages получит сообщение WM_QUIT, для параметра Termination будет установлено значение True. Приложения Delphi всегда получают сообщение WM_QUIT, потому что основная форма или приложение закрываются или потому что вызывается метод Terminate. Когда приложение выполняет высокоинтенсивную операцию, занимающую много системных ресурсов, следует периодически вызывать метод Application-on.ProcessMessages и проверять свойство Application.Termination, чтобы определить, необходимо ли завершить операцию для завершения приложения. . 1.11 Свойство UpdateFormatSettings Свойство UpdateFormatSettings определяет, будет ли приложение автоматически обновлять параметры формата, когда пользователь изменяет конфигурацию системы. Определяется следующим образом: свойство UpdateFormatSettings: Boolean. С помощью свойства UpdateFormatSettings приложение может управлять автоматическим обновлением параметров формата. Конструктор TApplication устанавливает для этого свойства значение True. Свойство UpdateFormatSett-ings будет проверено, когда приложение получит сообщение WM_WININICHANGE. Рекомендуется использовать настройки формата по умолчанию, которые являются локальными настройками Windows. Вы можете установить для UpdateFormatSettings значение False, чтобы избежать изменения настроек формата во время выполнения приложения Delphi. 1.12 Атрибут UpdateMetricSettings Атрибут UpdateMetricSettings указывает, следует ли обновлять связанные параметры, такие как шрифт окна подсказки и заголовок значка. Определение следующее: свойство UpdateMetricSettings: Boolean; Свойство UpdateFormatSettings указывает, отражаются ли изменения в таких настройках, как шрифт окна приглашения и заголовок значка в системе, на изменениях связанных параметров в приложении. Конструктор TApplication устанавливает для начального значения UpdateMetricSettings значение True. 2. Метод 2.1 Метод BringToFront Метод BringToFront устанавливает последнее активное окно приложения на передний план всех окон на рабочем столе. Его определение следующее: процедура BringToFront Используйте метод BringToFront, чтобы найти самое последнее активное окно, принадлежащее основной форме, и перенести его на передний план. Метод BringToFront также может проверить, является ли окно видимым (Visible) и действительным (Enabled), прежде чем оно станет самым передним окном. Например, когда приложение получает почту, возможно, потребуется активировать специализированный обработчик и вывести его на передний план рабочего стола Windows. В настоящее время для этого можно вызвать метод Application.BringToFront. 2.2 Метод CreateForm Метод CreateForm используется для создания новой формы (формы). Он определяется следующим образом: процедура CreateForm(FormClass: TFormClass; var Reference); Приложения Delphi всегда будут вызывать метод CreateForm. Поэтому программистам редко приходится вызывать метод CreateForm напрямую. Типичный проект Delphi включает один или несколько вызовов метода CreateForm в основной части кода проекта и автоматически управляет созданием формы при использовании конструктора форм. Вы также можете вызвать метод CreateForm во время выполнения для динамического создания формы. Метод CreateForm создает новую указанную форму на основе параметра FormClass и присваивает форму переменному параметру Reference. Владельцем вновь созданной формы является объект Application. По умолчанию приложение будет использовать первую форму, созданную путем вызова CreateForm в качестве основной формы проекта. 2.3 Метод HandleException Метод HandleException предоставляет дескриптор по умолчанию для исключений приложения. Он определяется следующим образом: процедура HandleException(Sender: TObject); Метод HandleException полезен для авторов определенных компонентов, поскольку он может генерировать событие, которое не должно отвечать на сообщения Windows. Вы можете использовать обработчик событий OnException в своем приложении для управления другими операциями исключений в пользовательском коде. В коде приложения, если исключение пропускает все блоки try, приложение автоматически вызовет метод HandleE-xception и отобразит диалоговое окно, указывающее на то, что произошла ошибка. Если объектом исключения не является EAbort, то Han-dleException вызовет дескриптор OnException (если он существует), в противном случае будет вызвано ShowException для отображения диалогового окна с сообщением об ошибке. 2.4 Метод UnhookMainWindow Метод UnhookMainWindow используется для освобождения программы, зависшей на главной форме методом HookMainWindow. Определение следующее: type TWindowHook = function(var Message: TMessage): Boolean of object; Укажите процедуру диалогового окна в параметре Hook. Тип TwindowHook — это параметр для вызова метода HookMainWindow. Этот параметр является указателем метода для вызова диалоговой программы в диалоговом окне, отличном от Delphi. Диалоговые программы похожи на оконные программы в том, что они обрабатывают сообщения для диалоговых окон, но синтаксис у них другой. 3. Событие 3.1 Событие OnActivate Событие OnActivate возникает, когда приложение становится активным. Определение следующее: тип TNotifyEvent = процедура (Отправитель: TObject) объекта; свойство OnActivate: TNotifyEvent Используйте событие OnActive, чтобы написать обработчик событий, чтобы указать специальную обработку, когда приложение становится активным. Приложение Windows становится активным при первом запуске или когда его фокус переносится обратно на текущее приложение из другого приложения Windows. 3.2 Событие OnDeactivate Событие OnDeactivate возникает, когда приложение становится неактивным. Оно определяется следующим образом: тип TNotifyEvent = процедура (Отправитель: TObject) объекта; свойство OnDeactivate: TNotifyEvent Событие OnDeactive может быть вызвано непосредственно перед тем, как приложение станет неактивным, тем самым завершая специальную обработку, указанную в обработчике события. Событие OnDeactive текущего приложения возникает, когда пользователь переходит из текущего приложения в другое приложение. 3.3 Событие OnException Событие OnException возникает, когда в приложении возникает исключение без дескриптора. Оно определяется следующим образом: тип TExceptionEvent = процедура (Отправитель: TObject; E: Exception) объекта; свойство OnException: TExceptionEvent. Событие OnException можно использовать для изменения действия по умолчанию, когда в приложении возникает исключение без обработчика. В методе TApplication.HandleException автоматически вызывается обработчик события OnException. Событие OnException используется только для обработки исключений, возникающих во время обработки сообщения. Исключения, возникающие до или после выполнения Application.Run, не приводят к возникновению события OnException. Если исключение игнорируется в блоке try кода приложения, приложение автоматически вызывает метод HandleException. Если объект исключения не является EAbort, HandleException вызовет дескриптор OnException (если он существует), в противном случае будет вызван ShowException для отображения диалогового окна с сообщением об ошибке. Тип TExceptionEvent — это тип события OnException, который указывает на метод обработки исключений в приложении. Параметр Sender — это объект, который генерирует исключение, а параметр E — это объект исключения. 3.4 Событие OnHelp Событие OnHelp возникает, когда приложение получает запрос на помощь. Определение следующее: type THelpEvent = function (Command: Word; Data: Longint; var CallHelp: Boolean): логическое значение объекта; OnHelp: THelpEvent; Используйте OnHelp для написания обработчика событий для выполнения специальной обработки при наличии запроса. за помощью. Метод HelpContext и метод HelpJump автоматически вызывают событие OnHelp. Установите для CallHelp значение True, чтобы позволить VCL вызывать WinHelp после возникновения события. Установите для CallHelp значение False, чтобы VCL не вызывал WinHelp; Все методы, связанные со справкой, в приложениях Delphi проходят через событие OnHelp. WinHelp вызывается только тогда, когда параметр CallHelp в событии OnHelp возвращает значение True или когда событию OnHelp не присвоен действительный дескриптор. 3.5 Событие OnHint Когда указатель мыши перемещается по элементу управления или элементу меню и элемент управления или пункт меню может отображать подсказку, возникает событие OnHint. Определение следующее: тип TNotifyEvent = процедура (Отправитель: TObject) объекта; свойство OnHint: TNotifyEvent Обработчик событий, написанный с помощью OnHint, может выполнить указанную операцию при возникновении события OnHint; Когда пользователь помещает указатель мыши на элемент управления и значение свойства Hint элемента управления не является пустой строкой (''), происходит событие OnHint. Событие OnHint обычно используется для отображения значения свойства Hint элемента управления или пункта меню в качестве заголовка элемента управления панели (например, TStatusBar), поэтому панель используется в качестве строки состояния. Когда происходит событие OnHint, атрибут Hint обычно указывается как справочная подсказка и более длинная подсказка, которая отображается в другом месте. 3.6 Событие OnIdle Событие OnIdle возникает, когда приложение переходит в режим ожидания. Определение следующее: тип TIdleEvent = процедура (Отправитель: TObject; var Done: Boolean) объекта; свойство OnIdle: TIdleEvent Используйте OnIdel для написания обработчика событий для завершения указанной операции, когда приложение находится в режиме ожидания. Приложение простаивает, когда оно не выполняет какой-либо код. Например, приложение простаивает, пока ожидает ввода пользователя. Тип TIdelEvent — это тип события OnIdel, указывающий на метод, который запускается, когда приложение простаивает. Объект TIdelEvent имеет переменную Done, значение которой по умолчанию равно True. Если Done имеет значение True, функция Windows API WaitMessage будет вызываться при возврате OnIdel. WaitMessage заставляет другие приложения получать фокус управления до тех пор, пока в очереди сообщений приложения не появится новое сообщение. Если параметр Done имеет значение False и приложение не занято, оно не позволит другим приложениям получить контрольный фокус. Когда приложение простаивает, событие OnIdel возникает только один раз, а следующее событие OnIdel может не произойти, пока для параметра Done не будет установлено значение True. Установка для параметра Done значения False в приложении устраняет неустойчивые подсчеты времени процессора, которые могут повлиять на общую производительность системы. 3.7 Событие OnMessage генерируется, когда приложение получает сообщение WINDOWS. Оно определяется следующим образом: тип TMessageEvent = процедура (var Msg: TMsg; var Handled: Boolean) объекта; свойство OnMessage: TmessageEvent используется для получения сообщений WINDOWS. может получать все сообщения, отправленные программой в WINDOWS. Это событие генерируется, когда приложение получает сообщение. Переменная Msg имеет тип сообщения WINDOWS.