Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
ВнизОбработыка событий в классах Найти похожие ветки
← →
BorisMor © (2004-04-08 12:59) [0]Имеется класс (назовем его A) наследуемый от TForm
А обрабатывается событие OnKeyDown.
Требуется что бы тот кто радился от класса A тоже смог обработать это событие.
Проблемма: после обаботки события в классе A наследнику не приходит сообщений.
Про inherited лучше не говрить так как у меня не полуилось
Как решить проблемму ?
← →
Гаврила (2004-04-08 13:22) [1]в классе "А" нужно не захватывать на себя событие "OnKeyDown", а переопределять динамический метод
procedure TWinControl.KeyDown(var Key: Word; Shift: TShiftState);
И разумеется, при переопределении не забыит вызвать inherited
← →
BorisMor © (2004-04-08 13:40) [2]А как ? пример можно.
Я пока решил проблемму через отлов сообщения WM_KEYDOWN, но не эстетично это :)
← →
Семен Сорокин © (2004-04-08 14:27) [3]
TMyForm = class(TForm)
...
protected
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
...
end;
procedure TMyForm.KeyDown(var Key: Word; Shift: TShiftState);
begin
// твои действия
inherited KeyDown(Key, Shift)
end;
← →
BorisMor © (2004-04-09 06:31) [4]Ну как мне ккажится в TForm нет KeyDown поэтомму выдается:
Declaration of "KeyDown" differs from previous declaration.
← →
ЮЮ © (2004-04-09 06:40) [5]>Ну как мне ккажится
А сообщение, что твое объявление этого метода отличается от описания метода у предка, говорит о другом
← →
ЮЮ © (2004-04-09 06:42) [6]или в implementation заголовок не такой, как в interface
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.034 c