Ассемблер архитектура МП Ассемблерные подпрограммы Звуковые возможности управления клавиатурой Библиотека Turbo Vision графические подпрограммы Процедура InitGraph Обработчик событий Режим редактирования Видимый объект Поток События

Прежде всего, следует помнить, что изучение языка программирования представляет собой знакомство с формальными правилами записи алгоритмов для их последующего выполнения компьютером. Формальность проистекает из самих принципов, заложенных в архитектуру вычислительных устройств, и жесткости математической логики.

Обработка команд пользователя

Обработчик событий диалогового окна поддерживает только стандартные команды cmClose, cmOk, cmCancel. Как заставить его реагировать на команды пользователя? Вы правы: нужно перекрыть стандартный обработчик событий.

Введем новый объект TDlgWin как потомок объекта TDialog и перекроем его метод HandleEvent:

type

PDlgWin =ATDlgWin;

TDlgWin = object (TDialog)

Procedure HandleEvent(var Event: TEvent); Virtual; 

end;

В новом методе следует сначала вызвать стандартный обработчик, а затем проанализировать событие: если оно не очищено и содержит команду, значит была нажата какая-то командная кнопка, и нам следует заставить обработчик закрыть окно и вернуть эту команду как результат диалога с пользователем:

Procedure TDlgWin.HandleEvent(var Event: TEvent); 

{Обработчик событий для основного диалогового окна} 

begin

Inherited HandleEvent(Event);

if Event.What = evCommand then

EndModal(Event.Command) {Закрыть окно и вернуть команду} 

end;

Метод EndModal используется для того, чтобы завершить работу с диалоговым окном и вернуть команду в программу, использующую это окно. Измените описание переменной D в функции Control на

var

.....

D: PDlgWin;

и обращение к методу Init:

D := New(PDlgWin, Init(...));

и вновь запустите программу: теперь нажатие на любую кнопку диалогового окна приведет к его закрытию.

Модуль CRT включает процедуры и функции, обеспечивающие управление текстовым режимом работы экрана. С помощью входящих в модуль подпрограмм можно перемещать курсор в произвольную позицию экрана, менять цвет выводимых символов и окружающего их фона, создавать окна. Кроме того, в модуль включены также процедуры «слепого» чтения клавиатуры и управления звуком.
На главную