![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#16
|
||||
|
||||
|
Цитата:
Ошибка возникает только если при нажатии горячей клавиши фокус ввода находится в одном из уничтожаемых объектов. А возникает исключение из-за того, что после завершения обработчика FormKeyDown делается попытка отдать нажатую клавишу на обработку уже уничтоженному объекту. Просто нужно пресекать попытку отдать на обработку нажатую клавишу если она уже была тобой обработана как горячая клавиша. Например так: Код:
procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssCtrl in Shift) and (key = 78) then
begin
NewModul;
Key := 0;
end;
end;Или так: Код:
procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssCtrl in Shift) and (key = 78) then
begin
NewModul;
Abort;
end;
end; |
| Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Curen (20.12.2013)
| ||