Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
| Dim |
5.08.2005 15:57
Сообщение
#1
|
|
Гость |
Лююди, человеки, подскажите плиз ламеру:
Событием TForm.FormKeyDown(трям-пам-пам...) я получаю Key:Word... далее я его могу преобразовать chr()'ом или FloatToStr()'ом... в первом случае получается белеберда для системных клавиш(шифт, котрл итд), во втором я получаю вроде нормальный byte код клавиши... но мне нужно получить еще и буквенное обозначение. Тоесть, нажал 'Ctrl' --> получил что-то типа 'Key_Ctrl' или 'ssCtrl', 'Enter' --> 'Key_Enter', 'Z' --> 'Key_Z' итд..Я пытался сам разобраться и понял, что для этого нужно использовать юнит Qt! Но как это сделать??? Или может есть какой другой способ получить одновременно и буквенное и символьное обозначение клавиш, нажатых на клавиатуре? Для чего это нужно: в программе юзер должен иметь возможность забиндить любую клавишу для определенного действия! Для этого он нажимает кнопку на форме, появляется stayontop окошко, которое реагирует на нажатие кнопок клавиатуры. Когда пользователь нажал кнопку - ее код пишеться в реестр, а символьное обозначение (например LeftCtrl) выводится на форме в label... Вот Огромное спасибо! |
![]() ![]() |
| hiv |
12.08.2005 15:17
Сообщение
#2
|
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: 11 |
Если ему нужны соответствие кодов кнопкам, то пусть полезет в папку Delphi\Source\Rtl. Там есть исходник windows.pas и в нем все константы виртуальных кнопок определены:
Код ........ { Virtual Keys, Standard Set } {$EXTERNALSYM VK_LBUTTON} VK_LBUTTON = 1; {$EXTERNALSYM VK_RBUTTON} VK_RBUTTON = 2; {$EXTERNALSYM VK_CANCEL} VK_CANCEL = 3; {$EXTERNALSYM VK_MBUTTON} VK_MBUTTON = 4; { NOT contiguous with L & RBUTTON } {$EXTERNALSYM VK_BACK} VK_BACK = 8; {$EXTERNALSYM VK_TAB} VK_TAB = 9; {$EXTERNALSYM VK_CLEAR} VK_CLEAR = 12; {$EXTERNALSYM VK_RETURN} VK_RETURN = 13; {$EXTERNALSYM VK_SHIFT} VK_SHIFT = $10; {$EXTERNALSYM VK_CONTROL} VK_CONTROL = 17; {$EXTERNALSYM VK_MENU} VK_MENU = 18; {$EXTERNALSYM VK_PAUSE} VK_PAUSE = 19; ......... Хау. Я все сказал... -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
| Malice |
12.08.2005 15:39
Сообщение
#3
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
Цитата(hiv @ 12.08.05 15:17) Хау. Я все сказал... Ма-ла-дец! :D а где соответствия кодов названиям ? так надо: case key of |
| Dim |
21.08.2005 20:22
Сообщение
#4
|
|
Гость |
Цитата(Malice @ 12.08.05 15:39) так надо: Отэта я лоханулся! Можно было и без фора обойтись! :molitva:case key of |
Dim Нормальная ловушка для клавиш... 5.08.2005 15:57
volvo Dim, давай не будем изобретать велосипед:
procedu... 5.08.2005 17:11
Dim Спасибо огромное за ответ! По-порядку:
Да как ... 5.08.2005 17:47
Dim И еще вопрос до кучи:
Сделал деинсталлятор програм... 5.08.2005 21:26
Dim Есть тут кто живой? :)
Вобщем второй вопрос снима... 7.08.2005 2:26
hiv Так чем тебе переменная Key не подходит?
procedure... 12.08.2005 13:39
Malice
Человек хочет получить названия клавиш (Ctrl, F1... 12.08.2005 14:39
hiv
В хелпе: Virtual key codes 15.08.2005 8:23
Malice
Так, шутки шутками, но вот что надо автору:
При... 15.08.2005 12:48
Dim Покончим с этим! :D
Вот как это сделал я (мож... 21.08.2005 20:20![]() ![]() |
|
Текстовая версия | 15.11.2025 14:21 |