Сейчас на форуме: bartolomeo, hgdagon (+6 невидимых)

 eXeL@B —› Программирование —› Как добавить хот-кеи в программу?
Посл.ответ Сообщение

Ранг: 37.7 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 21 февраля 2006 06:57
· Личное сообщение · #1

Как я понял, практически все программы написанные на С++ и содержащие горячие клавиши содержат ресурс Accelerators, что позволяет эти горячие клавиши изменять и добавлять новые на нужные функции. А вот проги писаные на паскале и скомпиленые в дельфях кажется не дают такой возможности, или я ошибаюсь? Есть ли способ с этим справиться?




Ранг: 307.9 (мудрец), 196thx
Активность: 0.180
Статус: Участник

Создано: 21 февраля 2006 07:12
· Личное сообщение · #2

sLime
Хоткей можно добавить простым добавлением в название контрола символа & (действует для менюх, лейблов и кнопок; доступ через Alt+Button). Например есть батон с именем "&File" - значит хоткей для него Alt+F.

-----
Don_t hate the cracker - hate the code.




Ранг: 37.7 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 21 февраля 2006 07:55 · Поправил: sLime
· Личное сообщение · #3

mysterio
Я бы даже это хот-кеем не назвал, так... просто быстрый доступ к элементу,
при нажатии на альт, буква рядом с которой был символ &, становится подчеркнутой.
А что если регистр клавы на русский переключен, а меню и кнопки на инглише?
Тогда все, это уже не работает, к сожалению это не горячие клавиши.
В дельфях это достигается за счет функции RegisterHotkey, но ее-то в ресурс описания формы не впихнешь, дальше я ничего не пойму Постоянно сталкиваюсь с этой проблемой, это очень необходимо при постоянно вызываемых функциях.



Ранг: 7.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 21 февраля 2006 13:54
· Личное сообщение · #4

RegisterHotkey нужна для того, чтобы создавать глобальные горячие клавиши, т.е. которые могут вызываться из других программ.
А так - я думаю, что установка KeyPreview=True свойства формы и обработка ее OnKeyPress, OnKeyUp помогут.



Ранг: 37.7 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 22 февраля 2006 02:38
· Личное сообщение · #5

Grom PE пишет:
А так - я думаю, что установка KeyPreview=True свойства формы и обработка ее OnKeyPress, OnKeyUp помогут.

В смысле? OnKeyPress и OnKeyUp как-то могут помочь?
Ну допустим событие OnKeyPress можно обработать для нажатия не любой, а определенной клавиши (сочетания клавиш, хотя я точно не знаю).
Есть в дельфийских программах ресурс RCData --->TMAINFORM - т.е. описание формы,
допустим в проге есть главное меню и в описании элемент меню выглядит как:
object SavePageMenuItem: TMenuItem
Caption = 'Save page'
OnClick = MasterSavePageClick
end

Как видно при клике мышкой идет вызов MasterSavepageClick, откуда он вызывается и как?
В си++ программах рядом с каждым пунктом меню в ресурсах написан соответствующий идентификатор вызываемой ф-ции, напр. 38957.
Пишем в ресурсе Accelerators 38957 и назначаем любой (не глобальный) хоткей, теперь наш браузер может сохранять страницу например по CTRL+ALT+NUMPAD2.
Как в дельфи-программах так сделать? Кто-нибудь знает? Подскажите пожалуйста.



Ранг: 88.0 (постоянный)
Активность: 0.070
Статус: Участник

Создано: 22 февраля 2006 21:03
· Личное сообщение · #6

sLime пишет:
OnKeyPress и OnKeyUp как-то могут помочь?

Наверное, если обработать OnKeyPress в данном случае NUMPAD2 и через API GetKeyState посмотреть нажаты ли Ctrl и Alt.



Ранг: 37.7 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 23 февраля 2006 23:49
· Личное сообщение · #7

rep0A пишет:
Наверное, если обработать OnKeyPress в данном случае NUMPAD2 и через API GetKeyState посмотреть нажаты ли Ctrl и Alt.

А как это реализовать на практике?



Ранг: 88.0 (постоянный)
Активность: 0.070
Статус: Участник

Создано: 24 февраля 2006 16:30 · Поправил: rep0A
· Личное сообщение · #8

sLime

На паскале никогда ничего не писал, поэтому пример для него дать не могу. Но на асме это выглядит примерно так(см. аттач)

На паскале наверника можно обрабатывать сообщения и вызывать API...
Если вдруг понадобится ТУТ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceui40/html/cerefVirtualKeyCodes.asp список Virtual Key-ев.



Ранг: 88.0 (постоянный)
Активность: 0.070
Статус: Участник

Создано: 24 февраля 2006 16:37
· Личное сообщение · #9

аттач...

2c11_example.txt.zip



Ранг: 37.7 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 27 февраля 2006 03:37
· Личное сообщение · #10

rep0A
О, спасибо! Вот с этим я и поэкскрементирую


 eXeL@B —› Программирование —› Как добавить хот-кеи в программу?
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати