В 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;
Оригинал .