Главная страница
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.057 c
2-1161511329
Riply
2006-10-22 14:02
2006.11.05
EnumResourceTypes типы перебирает, но возвращает ошибку


2-1161358396
Ezorcist
2006-10-20 19:33
2006.11.05
Высота трея?


15-1160562761
Anatoly Podgoretsky
2006-10-11 14:32
2006.11.05
Top 10


11-1136123221
Аид
2006-01-01 16:47
2006.11.05
Контрол для чата


3-1157530675
alex_sc
2006-09-06 12:17
2006.11.05
запись и чтение GIF из MSSQL