Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2011, 12:33   #1
malor
Форумчанин
 
Регистрация: 23.05.2007
Сообщений: 151
Вопрос VK_TAB: приходит лишь сообщение об отпускании клавиши ( Message.lParam < 0)


Почему про нажатие клавиши не приходит сообщения? Т.е. с Message.lParam большим нуля.
Код:
procedure TForm1.Wndproc(var Message: TMessage);
var
    strLog: AnsiString;
begin
  case Message.Msg of
    WM_KEYDOWN, WM_SYSKEYDOWN, WM_SYSKEYUP, WM_KEYUP:
    begin
      strLog := 'wParam: ' + IntToStr(Message.wParam) + 
                ' lParam: ' + IntToStr(Message.lParam);
    end;
  else
    inherited;
  end;
end;
Delphi XE
Вложения
Тип файла: zip TabProject.zip (84.4 Кб, 6 просмотров)
malor вне форума Ответить с цитированием
Старый 12.08.2011, 13:32   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

А вы какое сообщение ловите? На какое обработчик стоит?
p51x вне форума Ответить с цитированием
Старый 12.08.2011, 14:00   #3
malor
Форумчанин
 
Регистрация: 23.05.2007
Сообщений: 151
Вопрос

Ставил разные Condition на праметр Message.lParam:



И при запуске программы жал только Tab на клавиатуре.
malor вне форума Ответить с цитированием
Старый 12.08.2011, 14:12   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Отловите в Application.OnMessage
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.08.2011, 11:46   #5
malor
Форумчанин
 
Регистрация: 23.05.2007
Сообщений: 151
Стрелка

Отловил так:
Код:
procedure TForm1.CMDialogKey(var AMessage: TCMDialogKey);
var   strLog: AnsiString;
begin
  if AMessage.CharCode = VK_TAB then begin
      strLog := 'wParam: ' + IntToStr(AMessage.CharCode) + ' lParam: ' 
                   + IntToStr(AMessage.KeyData);
     AMessage.result := 1;
     Exit;
  end;
  inherited;
end;
malor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Message.wParam равен VK_BACKSPACE: клавиша, которую не жал, порождает сообщение? malor Общие вопросы Delphi 0 09.08.2011 21:25
The message resource is present but the message is not found in the string/message table Apokal Win Api 0 19.05.2011 18:06
WPARAM wParam, LPARAM lParam, LPVOID *lpParam mizantrop32 Win Api 2 18.02.2011 12:10
Как послать в систему сообщение о нажатии клавиши? Gerzs Общие вопросы Delphi 7 24.10.2009 19:19
Как послать Edit'у сообщение о нажатии клавиши Vadik(R) Общие вопросы Delphi 4 27.12.2008 20:38