![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Коды стрелок?
alext © (2002-06-20 15:48:00)Не могу найти код стрелки вниз.
Например Enter-#13, а стрелочки? Может, кто подскажет?
Юрий Зотов (2002-06-22 13:26:00) [1]Народ, аккуратней с советами!!! Символы 37..40 - это вовсе не стрелки, а обычные нормальные ASCII-символы, посмотрите по таблице.
Стрелки же относятся к так называемым РАСШИРЕННЫМ клавишам, нажатие на которые генерит не 1 байт (символ), а последовательность из 2-х байтов. Во втором байте там действительно сидит, например, #37, но смысл его совершенно другой.
Эта двухбайтовая последовательность обрабатывается драйвером клавиатуры, потом еще чем угодно - и в итоге попадает в Ващшу программу в виде сообщения WM_KEYDOWN/UP. Один из параметров этого сообщения содержит уже готовый ВИРТУАЛЬНЫЙ код клавиши - например, VK_LEFT (стрелка влево). Вот его и используйте. Для однобайтовых ASCII-клавиш (буквы, цифры, Enter, Esc и т.д.) этот код совпадает с ASCII-кодом, для расширенных - нет (потому что у расширенных никакого ASCII-кода просто нет).
См. Virtual-Key Codes в справке API.
Device (2002-06-22 12:51:00) [2]влево: #37
вверх: #38
вправо: #39
вниз: #40
Johnny Smith (2002-06-20 15:57:00) [3]Если часто приходится искать коды клавиш, то могу посоветовать такой метод:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
ShowMessage(inttostr(Key));
end;
MBo (2002-06-20 15:50:00) [4]VK_Down