Вторник, 22.07.2025, 04:49 Приветствую Вас Гость

On-line: Книги, учебники, статьи

Главная | Регистрация | Вход | RSS

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

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

Обработчик событий диалогового окна поддерживает только стандартные команды 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(...));

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

Вход на сайт
Поиск
Календарь
«  Июль 2025  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031
Архив записей
Наш опрос
Как Вам удобнее??
Всего ответов: 341
Мини-чат
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0