![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин Подтвердите свой е-майл
Регистрация: 22.01.2008
Сообщений: 161
|
![]()
Написал прогу осуществляющую скриншот рабочего стола.
Терь хочу сделать так, чтобы юзер вместо того чтобы жать по баттонам проги, мог нажать определенные клавиши или сочетании клавиш на клавиатуре и получить тож самое, то есть сделать горячие клавиши. Для этого я сделал обработчик события form1.keypress и в нем прописал, например: if KEY = #8 THEN SHOT(); здесь shot - процедура выполняющая сам скриншот. В итоге все компилируется, но при нажатии Backspace ни чего не происходит! что я сделал не так?! подскажите уважаемые программисты, заранее большое спасибо. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]()
Поставь свойство form1.KeyPreview := true;
|
![]() |
![]() |
![]() |
#3 |
программист
Пользователь
Регистрация: 08.03.2008
Сообщений: 19
|
![]()
У формы есть событие OnKeyPress, которое возникает при нажатии (и отпускании(!)) любой клавиши, когда форма активна.
Есть, правда, еше OnKeyDown и OnKeyUp, которые возникают только при нажатии или отпускании люб. клавиши(соотв). Но первая процедура может определять язык и регистр букв, чего остальные не могут, однако не может определить Enter, Escape и т. д., что могут сделать остальные. Ну вот, в нутри процедуры KeyPress есть переменная Key типа Char, (что очень удобно(я имею ввиду что клавиша ввиде символа, а не кода, напр Key = '%') ), которая определяет нажатую клавишу. Напр: Код:
Например, вам нужно, чтоб сделался скриншот при нажатии Alt+S: Код:
Программист-Антиламер со стажем
|
![]() |
![]() |
![]() |
#4 |
программист
Пользователь
Регистрация: 08.03.2008
Сообщений: 19
|
![]()
У формы есть событие OnKeyPress, которое возникает при нажатии (и отпускании(!)) любой клавиши, когда форма активна.
Есть, правда, еше OnKeyDown и OnKeyUp, которые возникают только при нажатии или отпускании люб. клавиши(соотв). Но первая процедура может определять язык и регистр букв, чего остальные не могут, однако не может определить Enter, Escape и т. д., что могут сделать остальные. Ну вот, в нутри процедуры KeyPress есть переменная Key типа Char, (что очень удобно(я имею ввиду что клавиша ввиде символа, а не кода, напр Key = '%') ), которая определяет нажатую клавишу. Напр: Код:
Например, вам нужно, чтоб сделался скриншот при нажатии Alt+S: Код:
Программист-Антиламер со стажем
|
![]() |
![]() |
![]() |
#5 |
программист
Пользователь
Регистрация: 08.03.2008
Сообщений: 19
|
![]()
У формы есть событие OnKeyPress, которое возникает при нажатии (и отпускании(!)) любой клавиши, когда форма активна.
Есть, правда, еше OnKeyDown и OnKeyUp, которые возникают только при нажатии или отпускании люб. клавиши(соотв). Но первая процедура может определять язык и регистр букв, чего остальные не могут, однако не может определить Enter, Escape и т. д., что могут сделать остальные. Ну вот, в нутри процедуры KeyPress есть переменная Key типа Char, (что очень удобно(я имею ввиду что клавиша ввиде символа, а не кода, напр Key = '%') ), которая определяет нажатую клавишу. Напр: Код:
Например, вам нужно, чтоб сделался скриншот при нажатии Alt+S: Код:
Программист-Антиламер со стажем
|
![]() |
![]() |
![]() |
#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. |
![]() |
![]() |
![]() |
#7 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
То lamonana:
Это для пущей доходчивости вы отправили 3 одинаковых сообщения? Не приветствуется... Теперь по вопросу. Все то, что предлагалось - не есть "горячие клавиши" в их обычном понимании. По правилам - ставьте хук на свое сочетание клавиш. А еще, если мне память не изменяет, как-то рассматривался вопрос регистрации в системе своих горячих клавиш. Поищите, скорее всего это именно то, что нужно. |
![]() |
![]() |
![]() |
#8 | ||
программист
Пользователь
Регистрация: 08.03.2008
Сообщений: 19
|
![]() Цитата:
Код:
Цитата:
А потом БАЦ!.. И все три сообщения отправились. Надеюсь, больше не повторится.
Программист-Антиламер со стажем
|
||
![]() |
![]() |
![]() |
#9 |
Познаю мир
Форумчанин Подтвердите свой е-майл
Регистрация: 05.10.2007
Сообщений: 387
|
![]()
if (Key = 17) then SHOT(...);
Спасибо.Работает . Ещё вопрос где вы узнаёте виртуальный код клавиш ??? тут например Ctrl - 17 .. итд ??? ---
|
![]() |
![]() |
![]() |
#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 |