Показать сообщение отдельно
  #10  
Старый 06.10.2010, 12:04
Аватар для Sky.NET
Sky.NET Sky.NET вне форума
Прохожий
 
Регистрация: 22.09.2010
Сообщения: 49
Версия Delphi: XE
Репутация: 12
Радость

Правильно. Ты пытаешься текст 'VK_F1' перевести в число.
Вообще VK_F1 и т.п. это константы целого типа. И VK_F1 = 112 и далее +1 до VK_F24 = 135
Приведённый выше код это пример использования ГЛОБАЛЬНЫХ горячих клавиш, т.е. твоя программа будет отлавливать их даже если у тебя активно окно совсем другой программы. И если будут использоваться популярные сочетания горячих клавиш, то когда включена данная программа, эти же сочетания не будут работать в других программах, твоя программа будет их просто перехватывать.
Если тебе не нужен глобальный перехват горячих клавиш, то используй события:
OnKeyPress (Клавиша нажата)
OnKeyDown (Клавиша зажата)
OnKeyUp (Клавиша отпущена)
Обычно 2 последних события используются для обработки модификационных клавиш (Alt, Ctrl, Shift)
Приведу код использования из моей курсовой :
Код:
procedure TForm1.OnKeyPress(Sender: TObject; var Key: Char);
begin
  // Обработчик нажатий клавиш
  case Key of
    '0': B_0Click(Sender); // Если нажат символ 0, вызываем процедуру B_0Click и т.п.
    '1': B_1Click(Sender);
    '2': B_2Click(Sender);
    '3': B_3Click(Sender);
    '4': B_4Click(Sender);
    '5': B_5Click(Sender);
    '6': B_6Click(Sender);
    '7': B_7Click(Sender);
    '8': B_8Click(Sender);
    '9': B_9Click(Sender);
    #13: B_EnterClick(Sender); // клавиша Enter (код 13)
  end;
end;

procedure TForm2.OnKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  // Обработчик нажатий клавиш с Shift, Ctrl, Alt
  if ssAlt in Shift then // если зажата клавиша Alt
  Begin
    FlagF := true;
    E_2ndF.Text := '2ndF';
    if chr(Key) = 'M' then // И если нажат символ M
      B_MemAddClick(Sender);
  end;
  if ssShift in Shift then // если зажата клавиша Shift
    if chr(Key) = 'M' then
      B_MemShowClick(Sender);
  if ssCtrl in Shift then // если зажата клавиша Ctrl
    if chr(Key) = 'M' then
      B_MemClearClick(Sender);
end;

procedure TForm2.OnKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if not(ssAlt in Shift) then // если отпущена клавиша Alt
  Begin
    FlagF := false;
    E_2ndF.Text := '';
  end;
end;
Необходимые моменты я прокомментировал. Также вместо символов ('x') можешь использовать код клавиш (#X)
__________________
IDE := Embarcadero.RADStudio.XE.Architect
// Успешность метода научного тыка обратно пропорциональна извилистости головного мозга на кривизну рук ©
Ответить с цитированием