IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите 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... Вот blink.gif

Огромное спасибо!
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 5.08.2005 17:11
Сообщение #2


Гость






Dim, давай не будем изобретать велосипед:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
{ проверяем на совместное с Ctrl нажатие }
if (ssCtrl in Shift) and (key <> VK_CONTROL) then
Label1.Caption := ' Key: '+'( '+'Ctrl + '+Chr(Key)+' )'

{ иначе - проверяем на Alt + что-то }
else
if (ssAlt in Shift) and (key <> VK_MENU) then
Label1.Caption := ' Key: '+'( '+'Alt + '+Chr(Key)+' )'
else {значит просто нажатие на клавишу }

{ вначале проверяй на Enter, Tab и Escape, ну а потом - }
Label1.Caption := ' Key: ' + Chr(Key);
end;

Чем такое решение не устраивает?

Цитата
Когда пользователь нажал кнопку - ее код пишеться в реестр
А вот тут - поподробнее: какой именно код? Ты это уже придумал, или еще нет? "Alt + X" и "Ctrl + X" будут какими кодами представлены? Код "X" один и тот же... Придется писать в реестр не Word, а DWord и к нему еще присоединять состояние Alt и Ctrl ...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 25.06.2025 6:06
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"