![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Собсвенно сабж
Код:
type
TBaseGrid = class(TCustomControl)
..........
protected
procedure Paint; override;
procedure Click; override;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
...........
end;
procedure TBaseGrid.KeyDown(var Key: Word; Shift: TShiftState);
begin inherited KeyDown(Key, Shift);
if Key = VK_RETURN then ShowMessage('Попал');
{case Key of
VK_: SetEdt(Edt.EdtRow,Edt.EdtCol+1);
VK_RIGHT: SetEdt(Edt.EdtRow,Edt.EdtCol+1);
end; }
end;полагаю нужна еще иформация, но незнаю какая, не выкладывать же весь проект |
|
#2
|
||||
|
||||
|
Цитата:
Код:
type
TBaseGrid = class(TCustomControl)
.....
protected
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
.....
end;
.....
procedure TBaseGrid.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
inherited;
if CanFocus then SetFocus;
end; |
| Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Помидоркин (08.04.2014)
| ||
|
#3
|
||||
|
||||
|
Цитата:
|
|
#4
|
||||
|
||||
|
Нет, не работает.
Код:
procedure TBaseGrid.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Код:
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_DOWN then ShowMessage('Попал');
end;Возможно это важно: TBaseGrid описан в другом юните. Выяснилось: VK_DOWN, VK_RIGHT (т.е. клавиши со стрелками) переводят фокус между элементами. Нашел вот такую штуку Код:
Procedure tMessages ( Var Msg : tMsg; Var Handled : Boolean ); Begin If ( Msg.Message = WM_KeyDown ) And ( Msg.wParam In [VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT] ) Then Begin Case Msg.wParam Of VK_UP : ShowMessage ( 'Нажата стрелка вверх' ); VK_DOWN : ShowMessage ( 'Нажата стрелка вниз' ); VK_LEFT : ShowMessage ( 'Нажата стрелка влево' ); VK_RIGHT : ShowMessage ( 'Нажата стрелка вправо' ); End; Handled := True; End; End; procedure TForm1.FormCreate(Sender: TObject); begin Application.OnMessage := HandleMessages; end; я даже не уверен, что это то что нужно Последний раз редактировалось Помидоркин, 08.04.2014 в 19:08. |
|
#5
|
||||
|
||||
|
Цитата:
Чтобы этого не происходило нужно отлавливать сообщение WM_GETDLGCODE: Код:
type
TBaseGrid = class(TCustomControl)
.....
protected
procedure WMGetDlgCode(var Msg: TWMGetDlgCode); message WM_GETDLGCODE;
.....
end;
.....
procedure TBaseGrid.WMGetDlgCode(var Msg: TWMGetDlgCode);
begin
Msg.Result := DLGC_WANTARROWS;
end; |
| Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Помидоркин (09.04.2014)
| ||
|
#6
|
||||
|
||||
|
Цитата:
|