Jul 07

Перевод виртуальных кодов в символы

В Windows определены специальные, виртуальные коды, для кнопок клавиатуры. Например, VK_Enter, VK_Delete и т.д. Данные коды используются не часто, но все-же используются. Например, в OnKeyUp и в OnKeyDown.

Небольшая функция поможет вам преобразовать данные коды в символы:


function GetCharFromVirtualKey(Key: Word): string;
var
  keyboardState: TKeyboardState;   asciiResult: Integer;
begin
  GetKeyboardState(keyboardState);
  SetLength(Result, 2);
  asciiResult := ToAscii(key, MapVirtualKey(key, 0), keyboardState, @Result[1], 0);
  case asciiResult of
    0: Result := '';
    1: SetLength(Result, 1);
    2:;
  else
    Result := '';
  end;
end;

Пример использования:


procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState) ;
begin
   Self.Caption := GetCharFromVirtualKey(Key) ;
end;

Оригинал тут.


  1. Николай Курков
     Add karma Subtract karma  +0
    Цитировать.

    Не работает….

    1
  2. cukerman
     Add karma Subtract karma  +0
    Цитировать.

    Хм… даже такое бывает.

    2
  3. Trita
     Add karma Subtract karma  +0
    Цитировать.

    Огромное спасибо за инфу. Автору респект и уважуха.

    3
  4. Пикатор
     Add karma Subtract karma  +0
    Цитировать.

    Спасибо за информацию. Такое может пригодится.

    4
  5. Slonn
     Add karma Subtract karma  +0
    Цитировать.

    Хороший сайт, спасибо творцу.

    5

Поделитесь вашими мыслями



Ссылки в комментариях будут свободны от nofollow.

Поддерживаемые теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> 

Ссылки в комментариях будут свободны от nofollow.