Текущий архив: 2005.02.06;
Скачать: CL | DM;
Вниз
Глобальные клавиши Fn для всей формы Найти похожие ветки
← →
Vladimyr (2004-07-09 17:07) [0]Хочется, чтобы в программе совершались некие действия при нажатии клавиш F1, F2 и т.д. независимо от того, какой элемент принял фокус.
В VCL это удавалось сделать обработкойForm1.OnKeyDown
(OnKeyPress
здесь не подходит, так как не реагирует на функциональные клавиши).
Правда, это работало только тогда, когда в основной VCL-форме установлено свойствоKeyPreview := true
.
Видимо, в KOL-форме тоже есть что-то подобное, так какForm1.OnKeyDown
не срабатывает ни на одну клавишу.
Подозреваю, что ответ простой, но найти его в форуме я не смог :(
← →
Gandalf © (2004-07-09 23:16) [1]Про это не раз говорили и тут и даже в FAQ упоминалось вскольз.
function TForm1.KOLApplet1Message(var Msg: tagMSG;
var Rslt: Integer): Boolean;
var C : Char;
begin
Result := False;
case Msg.message of
WM_KEYDOWN, WM_SYSKEYDOWN:
if assigned( Form.OnKeyDown ) then
Form.OnKeyDown( Form, Msg.wParam, GetShiftState );
WM_KEYUP, WM_SYSKEYUP:
if assigned( Form.OnKeyUp ) then
Form.OnKeyUp( Form, Msg.wParam, GetShiftState );
WM_CHAR, WM_SYSCHAR:
if assigned( Form.OnChar ) then
begin
C := Char( Msg.wParam );
Form.OnChar( Form, C, GetShiftState );
Msg.wParam := Integer( C );
end;
end;
end;
← →
Vladimyr (2004-07-10 00:47) [2]Спасибо за ответ, это работает!
Но тогда как же некоторые контролы всё же реагируют на клавиатуру и мышь без такого обработчика?!..
← →
Gandalf © (2004-07-12 18:37) [3]Не понял вопроса
← →
Vladimyr © (2004-07-12 20:24) [4]Разобрался, спасибо :)
Страницы: 1 вся ветка
Текущий архив: 2005.02.06;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.042 c