|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.03.2008, 12:49 | #1 |
Форумчанин Подтвердите свой е-майл
Регистрация: 22.01.2008
Сообщений: 161
|
Hot Key для проги
Написал прогу осуществляющую скриншот рабочего стола.
Терь хочу сделать так, чтобы юзер вместо того чтобы жать по баттонам проги, мог нажать определенные клавиши или сочетании клавиш на клавиатуре и получить тож самое, то есть сделать горячие клавиши. Для этого я сделал обработчик события form1.keypress и в нем прописал, например: if KEY = #8 THEN SHOT(); здесь shot - процедура выполняющая сам скриншот. В итоге все компилируется, но при нажатии Backspace ни чего не происходит! что я сделал не так?! подскажите уважаемые программисты, заранее большое спасибо. |
09.03.2008, 13:04 | #2 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Поставь свойство form1.KeyPreview := true;
|
09.03.2008, 15:21 | #3 |
программист
Пользователь
Регистрация: 08.03.2008
Сообщений: 19
|
У формы есть событие OnKeyPress, которое возникает при нажатии (и отпускании(!)) любой клавиши, когда форма активна.
Есть, правда, еше OnKeyDown и OnKeyUp, которые возникают только при нажатии или отпускании люб. клавиши(соотв). Но первая процедура может определять язык и регистр букв, чего остальные не могут, однако не может определить Enter, Escape и т. д., что могут сделать остальные. Ну вот, в нутри процедуры KeyPress есть переменная Key типа Char, (что очень удобно(я имею ввиду что клавиша ввиде символа, а не кода, напр Key = '%') ), которая определяет нажатую клавишу. Напр: Код:
Например, вам нужно, чтоб сделался скриншот при нажатии Alt+S: Код:
Программист-Антиламер со стажем
|
09.03.2008, 15:21 | #4 |
программист
Пользователь
Регистрация: 08.03.2008
Сообщений: 19
|
У формы есть событие OnKeyPress, которое возникает при нажатии (и отпускании(!)) любой клавиши, когда форма активна.
Есть, правда, еше OnKeyDown и OnKeyUp, которые возникают только при нажатии или отпускании люб. клавиши(соотв). Но первая процедура может определять язык и регистр букв, чего остальные не могут, однако не может определить Enter, Escape и т. д., что могут сделать остальные. Ну вот, в нутри процедуры KeyPress есть переменная Key типа Char, (что очень удобно(я имею ввиду что клавиша ввиде символа, а не кода, напр Key = '%') ), которая определяет нажатую клавишу. Напр: Код:
Например, вам нужно, чтоб сделался скриншот при нажатии Alt+S: Код:
Программист-Антиламер со стажем
|
09.03.2008, 15:38 | #5 |
программист
Пользователь
Регистрация: 08.03.2008
Сообщений: 19
|
У формы есть событие OnKeyPress, которое возникает при нажатии (и отпускании(!)) любой клавиши, когда форма активна.
Есть, правда, еше OnKeyDown и OnKeyUp, которые возникают только при нажатии или отпускании люб. клавиши(соотв). Но первая процедура может определять язык и регистр букв, чего остальные не могут, однако не может определить Enter, Escape и т. д., что могут сделать остальные. Ну вот, в нутри процедуры KeyPress есть переменная Key типа Char, (что очень удобно(я имею ввиду что клавиша ввиде символа, а не кода, напр Key = '%') ), которая определяет нажатую клавишу. Напр: Код:
Например, вам нужно, чтоб сделался скриншот при нажатии Alt+S: Код:
Программист-Антиламер со стажем
|
09.03.2008, 15:53 | #6 |
Познаю мир
Форумчанин Подтвердите свой е-майл
Регистрация: 05.10.2007
Сообщений: 387
|
Вопрос по теме как сделать чтобы например SHOT(); выаполнялся по нажатию только Ctrl?
if (Shift = aaAlt) then SHOT(...); неработает. if (Shift = ssAlt) then SHOT(...); неработает. ЗЫ: "Горячяя клавиша" не должна быть глобальной те вне моей программы она не должна срабатывать ... темболее если "перехватить" контроль за CTRL то многое перестанет работать /в моём понимании/ ---
Последний раз редактировалось GAGARIN-NEW; 09.03.2008 в 16:08. |
09.03.2008, 15:59 | #7 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
То lamonana:
Это для пущей доходчивости вы отправили 3 одинаковых сообщения? Не приветствуется... Теперь по вопросу. Все то, что предлагалось - не есть "горячие клавиши" в их обычном понимании. По правилам - ставьте хук на свое сочетание клавиш. А еще, если мне память не изменяет, как-то рассматривался вопрос регистрации в системе своих горячих клавиш. Поищите, скорее всего это именно то, что нужно. |
09.03.2008, 17:21 | #8 | ||
программист
Пользователь
Регистрация: 08.03.2008
Сообщений: 19
|
Цитата:
Код:
Цитата:
А потом БАЦ!.. И все три сообщения отправились. Надеюсь, больше не повторится.
Программист-Антиламер со стажем
|
||
09.03.2008, 17:35 | #9 |
Познаю мир
Форумчанин Подтвердите свой е-майл
Регистрация: 05.10.2007
Сообщений: 387
|
if (Key = 17) then SHOT(...);
Спасибо.Работает . Ещё вопрос где вы узнаёте виртуальный код клавиш ??? тут например Ctrl - 17 .. итд ??? ---
|
09.03.2008, 17:43 | #10 | |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
интересные проги | kipish | Софт | 85 | 18.12.2022 01:03 |
Прокси-проги | Spooter | Софт | 3 | 20.08.2008 10:55 |
Заморозка проги | wwww | Общие вопросы Delphi | 3 | 09.10.2007 09:36 |
мои проги | bill | Помощь студентам | 2 | 17.07.2007 21:33 |