Турбо Паскаль 6.0


Активные события.


Активные события это нажатия клавиш (evKeyDown) или команды (evCommand) и передаются вниз по активной цепочке. (Детальное описание активных видимых элементов и активной цепочки приведено в "Выбранные и активные видимые элементы" главы 4). Текущий модальный видимый элемент получает активное событие первым и передает его в выбранный подэлемент. Если этот подэлемент содержит выбранный подэлемент, он передает событие ему. Процесс продолжается до тех пор пока не будет достигнут терминальный видимый элемент: это активный видимый элемент. Активный видимый элемент получает и обрабатывает активное событие. Если активный видимый элемент не знает как обработать какое-то из полученных событий, он передает событие вверх по активной цепочке своему владельцу. Процесс повторяется до тех пор пока событие не будет обработано или снова не достигнет модального видимого элемента. Если модальный видимый элемент не знает как обработать вернувшееся событие, он вызывает EventError. Эта ситуация - ненужное событие. (Неактивные видимые элементы могут обрабатывать активные события. См. раздел "Фаза".) События от клавиатуры иллюстрируют принцип активных событий совершенно ясно. Например, в интегрированной среде Turbo Pascal Вы можете открыть несколько файлов в окнах редактора. Когда Вы нажимаете клавишу, Вы знаете какой файл получит этот символ. Давайте посмотрим как Turbo Vision обеспечивает это. Нажатие клавиши генерирует событие evKeyDown, которое поступает в текущий модальный видимый элемент - объект TApplication. TApplication посылает событие своему выбранному элементу - панели экрана (панель экрана - всегда выбранный элемент TApplication). Панель экрана посылает событие своему выбранному видимому элементу - активному окну (с двойной рамкой). Окно редактора также имеет подэлементы - рамку, интерьер скроллинга и две полосы скроллинга. Из них может быть выбран только интерьер (и следовательно выбран по умолчанию), поэтому событие от клавиатуры приходит в него. Интерьер - редактор не имеет подэлементов и должен решать как обработать символ в событии evKeyDown.




- Начало -  - Назад -  - Вперед -



Книжный магазин