Показать сообщение отдельно
  #5  
Старый 09.04.2014, 00:08
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Помидоркин
Нет, не работает.
Код:
procedure TBaseGrid.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
- Нужен, фокуса действительно небыло. А вот VK_DOWN не работает, VK_SPACE, VK_RETURN работает, а стрелка вниз нет.
Стрелки перехватываются в процессе обработки очереди сообщений и обрабатываются как команды перемещения фокуса ввода между элементами управления.
Чтобы этого не происходило нужно отлавливать сообщение 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;
Ответить с цитированием