TURBO PASCAL |
Новости
|
Маршрутизация событий
Как уже говорилось, любая программа, работающая в среде Turbo Vision, является прямым или косвенным (через TApplicatiori) потомком TProgram и основана на обращении к трем главным методам этого объекта: Init, Run и Done. Например: Uses App,...; type TMyProgram = object (TApplication) ..... end; ..... var MyProgram = TMyProgram; ..... begin {Исполняемая часть программы:} MyProgram.Init; {Инициировать программу} MyProgram.Run; {Выполнить программу} MyProgram.Done {Завершить работу} end. Процесс получения и обработки событий инициируется методом TProgram.Run, который для этого обращается к методу TGroup.Execute (любая .программа является потомком TGroup). Метод TGroup.Execute реализует следующий цикл: var Event: TEvent; begin Event.What := evNothing; {Инициировать пустое событие} repeat {Основной цикл программы} if Event.What <> evNothing then EventError(Event); {Событие не очищено - ошибка} GetEvent(Event); {Получить событие} HandleEvent(Event); {Передать событие обработчику} until EndState <> Continue; ..... end; Метод GetEvent наследуется всеми видимыми элементами от TView и является основным источником событий. Этот метод вначале проверяет, не подготовил ли событие метод PutEvent и, если это так, возвращает его. Затем GetEvent проверяет клавиатуру и мышь. Если какое-то из этих устройств изменило свое состояние, метод формирует и возвращает соответствующее событие. Если изменения не произошло, GetEvent обращается к методу TProgram.Idle, чтобы запустить «фоновую» задачу (подробнее об этом см. п. 18.6). С помощью вызова метода TGroup.Execute события всегда начинают свой путь с модального видимого элемента. Напомню, что модальный элемент определяет точку диалога; в программе в каждый момент времени есть один и только один модальный элемент (см. п. 17.4). В самом начале программы таким элементом является обычно экземпляр объекта TProgram или его потомка. Если в программе открыто модальное диалоговое окно, оно обратится к TGroup.Execute и, следовательно, путь событий начнется с этого окна. В любом случае начинает обработку события метод HandleEvent модального видимого элемента. Дальнейший маршрут события зависит от того, является ли событие позиционированным, активным или общим.
|
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |