Прежде чем задать вопрос, смотрите 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... Вот Огромное спасибо! |
![]() ![]() |
| volvo |
5.08.2005 17:11
Сообщение
#2
|
|
Гость |
Dim, давай не будем изобретать велосипед:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); Чем такое решение не устраивает? Цитата Когда пользователь нажал кнопку - ее код пишеться в реестр А вот тут - поподробнее: какой именно код? Ты это уже придумал, или еще нет? "Alt + X" и "Ctrl + X" будут какими кодами представлены? Код "X" один и тот же... Придется писать в реестр не Word, а DWord и к нему еще присоединять состояние Alt и Ctrl ... |
| Dim |
5.08.2005 17:47
Сообщение
#3
|
|
Гость |
Спасибо огромное за ответ! По-порядку:
Цитата(volvo @ 5.08.05 17:11) Dim, давай не будем изобретать велосипед: Да как сказать, боюсь без велосипеда или на крайняк самоката тут не обойтись((((procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); Чем такое решение не устраивает? Дело в том, что мне нужно отловить не комбинацию а одну клавишу (Ctrl, Alt, Shift, Tab, F1..F12, Enter, цифровые и буквенные кнопы, BackSpace итд)... Поэтому проверка на совместное нажатие не нужна! Искал в базах ДРКБ, Королевстве Делфи и DelphiWorld - видел подобные примеры, но это немного не то! Можно конечно написать для буквенных клавиш обработку chr()'ом, а для остальных зафигачить огромный кейс по word коду, но как-то совсем по-ламерски это((( Если более элегантного решения не найдется - сделаю так... Цитата(volvo @ 5.08.05 17:11) А вот тут - поподробнее: какой именно код? Ты это уже придумал, или еще нет? "Alt + X" и "Ctrl + X" будут какими кодами представлены? Код "X" один и тот же... Придется писать в реестр не Word, а DWord и к нему еще присоединять состояние Alt и Ctrl ... Тут все просто. Хочу сделать так примерно так:Код Key: Word; ... RegFile.WriteInteger('Options', 'HotKeyCode', FloatToStr(Key)); ... А потом считала прога с реестра ключик и по табличке вывела его буквенное знчение... Не знаю насколько внятно разьяснил чего я хочу но старался :p2: Еще раз спасибо! |
Dim Нормальная ловушка для клавиш... 5.08.2005 15:57
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 Если ему нужны соответствие кодов кнопкам, то пуст... 12.08.2005 15:17
Malice
Ма-ла-дец! :D а где соответствия кодов назв... 12.08.2005 15:39
hiv
В хелпе: Virtual key codes 15.08.2005 8:23
Malice
Так, шутки шутками, но вот что надо автору:
При... 15.08.2005 12:48
Dim Покончим с этим! :D
Вот как это сделал я (мож... 21.08.2005 20:20
Dim Отэта я лоханулся! Можно было и без фора обойт... 21.08.2005 20:22![]() ![]() |
|
Текстовая версия | 15.11.2025 14:19 |