TObject | TApplication |
---|---|
  | HAccTable KBhandlerWnd Name Status |
Init | |
Done | |
Free | |
Init Done CanClose Error ExecDialog IdleAction InitApplication InitInstance InitMainWindow MakeWindow MessageLoop ProcessAppMsg ProcessDlgMsg ProcessAccels ProcessMDIAccels Run SetKbdHandler ValidWindow |
    TApplication обеспечивает структуру для приложения ObjectWindows. Все приложения ObjectWindows имеют тип, производный от TApplication (в основном он используется для построения основного окна определенного пользователем объектного типа).
    HAccTable (чтение/запись)
    HAccTable содержит описатель ресурса таблицы оперативных
клавиш Windows, определенного для данного приложения.
    KBHandlerWnd (только чтение)
    KBHandlerWnd указывает на текущее активное окно, если
разрешен механизм обработчика клавиатуры этого окна. Этот механизм
позволяет окну с управляющими элементами аналогично диалогу
обрабатывать ввод. Если этот механизм для активного окна запрещен,
KBHandlerWnd имеет значение nil.
    MainWindow (чтение/запись)
    MainWindow указывает на основное перекрывающееся окно
приложения, экземпляр которого должен быть создан для типа приложения
методом InitMainWindow.
    Name содержит имя приложения.
    Status указывает текущее состояние выполняющегося
приложения. Если Status больше или равно 0, оно выполняется успешно.
Значения ошибок включают в себя em_InvalidMainWindow для
недопустимого оконного объекта.
    Ниже описываются методы, определенные в данном объекте.
    Строит объект приложения, вызывая сначала конструктор Init,
наследуемый из TObject, затем устанавливая переменную Application
в @Self, Name в AName, HAccTable и Status в 0 и MainWindow и
KBHandlerWnd в nil.
    Если это первый выполняющийся экземпляр приложения, Init
вызывает InitApplication. Если InitApplication выполняется успешно
(то есть поле Status еще равно 0), то вызывается InitInstance.
    Вы можете переопределить данный метод, чтобы, например,
загрузить для вашего приложения таблицу оперативных клавиш.
Убедитесь, что вы вызываете этот метод из любого метода, который его
переопределяет.
    См. также: TObject.Init, TApplication.InitApplication,
TApplication.InitInstance.
    Уничтожает объекты, владельцем которых является приложение,
отменяя основное окно, а затем вызывая для завершения приложения
наследуемый из TObject деструктор Done.
    См. также: TObjectDone.
    Возвращает True, если приложение можно закрыть (OK). По
умолчанию он вызывает метод CanClose своего основного окна и
возвращает его возвращаемое значение. Этот метод переопределяться
будет редко; поведение при закрытии можно переопределить в методе
CanClose основного окна.
    См. также: TWindowsObject.CanClose, TWindowsObject.
WMDestroy.
    Error обрабатывает ошибки, идентифицируемые значением
ошибки, передаваемым в ErrorCode. Эти ошибки могут генерироваться
объектом приложения или любым объектом окна либо диалога, а
ErrorCode может быть одной из следующих ошибок, обнаруживаемых и
сообщаемых ObjectWindows, или ошибкой, определяемых вами:
    Константы em_XXXX описываются в данной главе.
    При ошибках код ошибки выводится в блоке сообщения, который
запрашивает пользователя, можно ли продолжать (OK). Если нет,
выполнение программы останавливается.
    После проверки ValidWindow выполняет объект режимного
диалога, переданный в ADialog, вызывая метод Execute объекта диалога.
Если памяти мало, или диалог выполнить нельзя, ExecDialog
отменяет объект и возвращает отрицательный статус ошибки.
    См. также: TDialog.Execute.
    IdleAction обеспечивает для вашего приложения возможность
выполнить фоновую обработку вне цикла сообщения. Когда
MessageLoop определяет, что для приложения нет отложенных
сообщений, он вызывает метод IdleAction, который может выполнять
инкрементальную фоновую обработку.
    Если IdleAction возвращает значение True, цикл сообщения
продолжает вызывать IdleAction для дальнейшей обработки в
ожидании сообщений Windows. Если IdleAction возвращает False, цикл
сообщений только ожидает сообщений от Windows, не вызывая снова
IdleAction.
    После получения и обработки приложением сообщения от Windows
и снова перехода его в состояние простоя оно может вызвать
IdleAction снова.
    По умолчанию IdleAction всегда возвращает False.
    Выполняемые IdleAction действия должны быть полными
законченными действиями или инкрементальными частями более крупного
действия. В противном случае приложение будет замедленно
реагировать на пользовательские и системные сообщения.
    См. также: TApplication.MessageLoop.
    Выполняет инициализацию, необходимую только для первого
выполняющегося экземпляра приложения. По умолчанию InitApplication
ничего не делает. Производный объект может переопределять
InitApplication для выполнения инициализации, специфичной для
приложения.
    Выполняет инициализацию, необходимую для каждого
выполняющегося экземпляра приложения. TApplication.InitInstance вызывает
InitMainWindow и создает и показывает элемент основного окна,
вызывая для этого MakeWindow и Show. Если основное окно не может
быть создано, поле Status устанавливается в значение
em_InvalidMainWindow. Если вы переопределяете этот метод, то
TApplication.InitInstance должна вызываться явно.
    См. также: TApplication.InitMainWindow.
    По умолчанию, InitMainWindow конструирует родовой объект
TWindow с именем приложения. Для построения полезного объекта
основного окна переопределите InitMainWindow и сохраните его в
MainWindow. Обычное использование имеет вид:
    Пытается создать окно или безрежимный диалог, связанный с
объектом, переданным в AWindowsObject после проверки
использования буфера надежности. Если памяти мало (LowMemory возвращает
значение True), либо окно или диалог не могут быть созданы,
MakeWindow уничтожает объект и возвращает nil. В случае успешного
выполнения возвращается AWindowsObject.
    См. также: TWindow.Create, LowMemory.
    Работает с циклом общих сообщений прикладной программы,
который выполняется в течение всей работы приложения. Для обработки
специальных сообщений для безрежимных диалоговых блоков,
оперативных клавиш и оперативных клавиш MDI MessageLooр вызывает
рrocessAppMsg. Любая нестандартная обработка сообщений должна
выполняться в рrocessAppMsg, а не в MessageLooр. Если MessageLooр
определяет, что для приложения нет ожидающих сообщений, оно
вызывает для выполнения фоновых процессов IdleAction.
    См. также: TApplication.рrocessAppMsg, TApplication.
IdleAction.
    Выполняет специальную обработку сообщения оперативной
клавиши. Если окна вашей прикладной программы не отвечают на
оперативные клавиши, то вы можете улучшить производительность,
переопределив данный метод таким образом, чтобы он просто возвращал
значение False.
    Проверяет на специальную обработку сообщения безрежимного
диалога, оперативной клавиши и оперативной клавиши MDI. Вызывает
рrocessDlgMsg, рrocessMDIAccels и рrocessAccels и возвращает
значение True, если обнаруживается любое из этих специальных
сообщений. Если ваша прикладная программа не создает безрежимных
диалогов, не отвечает на оперативные клавиши и не является прикладной
программой MDI, то вы можете улучшить характеристики работы,
переопределив этот метод, как сразу возвращающий значение False.
    Выполняет специальную обработку сообщений безрежимного
диалога и окна, проверяя на наличие ввода с клавиатуры для элементов
управления. Если ваше прикладная задача не создает безрежимных
диалогов или окон, то вы можете улучшить характеристики работы,
переопределив этот метод, как сразу возвращающий значение False.
    Выполняет специальную обработку сообщений оперативной
клавиши для приложений, работающих с MDI. Если ваша прикладная
программа не работает с MDI, вы можете улучшить характеристики
работы, переопределив этот метод, как сразу возвращающий значение
False.
Поля
HAccTAble: THandle;
KBHandlerWnd: PWindowsObject;
MainWindow: PWindowsObject;
Name: PChar;
Status: Integer;
Методы
Init (иногда переопределяется)
constructor Init(AName: PChar);
Done (иногда переопределяется)
CanClose (переопределяется редко)
function CanClose: Boolean: virtual;
Error (часто переопределяется)
procedure Error(ErrorCode: Integer); virtual;
em_InvalidWindow
em_OutOfMemory
em_InvalidClient
em_InvalidChild
em_InvalidMainWindow
ExecDialog (никогда не переопределяется)
function ExecDialog(ADialog: PWindowsObject): Integer;
virtual;
ExecDialog (никогда не переопределяется)
function ExecDialog(ADialog: PWindowsObject): Integer;
virtual;
IdleAction
function IdleAction: Boolean;
InitApplication (иногда переопределяется)
рrocedure InitApplication; virtual;
InitInstance (иногда переопределяется)
рrocedure InitInstance; virtual;
InitMainWindow (всегда переопределяется)
рrocedure InitMainWindow; virtual;
рrocedure MyApplication.InitMainWindows;
begin
MainWindows := New(рMyWindow, Init(nil, 'Заголовок окна');
end;
MakeWindow (никогда не переопределяется)
function MakeWindow(AWindowsObject: рWindowsObject):
рWindowsObject; virtual;
MessageLooр (никогда не переопределяется)
рrocedure MessageLooр; virtual;
рrocessAccels (иногда переопределяется)
function рrocassAccels(var Message: TMsg): Boolean; virtual;
рrocessAppMsg (иногда переопределяется)
function рrocessAppMsg(var Message: TMsg): Boolean; virtual;
рrocessDlgMsg (иногда переопределяется)
function рrocessDlgMsg(var Message: TMsg): Boolean; virtual;
рrocessDMIAccels (иногда переопределяется)
function рrocessMDIAccels(var Message: TMsg); Boolean;
virtual;