Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.05;
Скачать: CL | DM;

Вниз

Реакция на клавиатуру   Найти похожие ветки 

 
AlexeyT ©   (2006-03-13 00:11) [0]

Пишу компонент, наследник TPanel. Как добавить реакцию на клавиши (Up/Down/Home/etc), какой метод для этого написать или перекрыть? В основной программе это FormKeyDown, а для компонента как сделать?


 
AbrosimovA   (2006-03-13 09:06) [1]

 TMyPanel = class(TPanel)
 private
 protected
   procedure WMKeyUp(var Message: TWMKeyUp); message WM_KEYUP;
 end;

var
 Form1: TForm1;
 Panel: TMyPanel;

implementation

{$R *.dfm}

procedure TMyPanel.WMKeyUp(var Message: TWMKeyUp);
begin
if Message.CharCode=VK_UP then ShowMessage("UP");
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Panel:=TMyPanel.Create(Self);
Panel.Parent:=Self;
Panel.Caption:="123";
end;

procedure TForm1.FormShow(Sender: TObject);
begin
FocusControl(Panel);
end;


 
Юрий Зотов ©   (2006-03-13 11:17) [2]

Чтобы оконный контрол получал сообщения клавиатуры, он должен обработать WM_GETDLGCODE и вернуть системе нужный результат. Описание см. в справке WinAPI или в MSDN.


 
AlexeyT ©   (2006-03-14 00:30) [3]

>AbrosimovA   (13.03.06 09:06) [1]
Спасибо.
Еще вопрос:
Есть ли разница: написать WMKeyDown или перекрыть TWinControl.KeyDown?Оба способа работают, есть ли разница по скорости отклика на клавиатуру?

А то что-то сейчас реакция на клавиатуру замедленная (сделал через KeyDown).


 
AlexeyT ©   (2006-03-14 00:32) [4]


> Юрий Зотов ©   (13.03.06 11:17) [2]

Тоже спасибо.


 
AbrosimovA   (2006-03-14 08:38) [5]


> Есть ли разница: написать WMKeyDown или перекрыть TWinControl.
> KeyDown


Ты это можешь проверить поставив брекпойнты на WMKeyDown и KeyDown
и посмотреть, что раньше сработает.


 
AbrosimovA   (2006-03-14 08:54) [6]

Используй WMKeyDown.


 
AlexeyT ©   (2006-03-14 19:40) [7]


> AbrosimovA   (14.03.06 08:54) [6]
> Используй WMKeyDown.

Наверное, буду использовать KeyDown, т.к. я сделал с WMKeyDown, и перестал работать обработчик OnKeyDown основйо формы. По скорости вроде одно и то же...



Страницы: 1 вся ветка

Текущий архив: 2006.11.05;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.034 c
2-1161454380
Officeman
2006-10-21 22:13
2006.11.05
ShellExecute(0, , http://www.delphimaster.r , , SW_SHOW);


2-1161406425
Insane SPIRIT
2006-10-21 08:53
2006.11.05
Перенос по словам в TStringGrid


2-1161511329
Riply
2006-10-22 14:02
2006.11.05
EnumResourceTypes типы перебирает, но возвращает ошибку


4-1150349210
r@bbit
2006-06-15 09:26
2006.11.05
Как отличить виртуальный привод от реального?


15-1160759448
Raeaz
2006-10-13 21:10
2006.11.05
Halt