![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 1 Всего: 15 |
Добрый вечер!
Столкнулся с такой проблемой - у меня на форме много Edit'ов, скажем штук 10... мне нужно, чтобы выполнялся код при нажатии клавиши F2, причом она может быть нажата в любом Edit'е... делать 10 раз процедуру onkeyup для каждого Edit'a - не вариант... глянул DRKB - нашел кусок кода, в котором используется процедурка CM_dialogkey перехвата диалоговых клавиш до того, как они будуь обрабатываться формой (покрайней мере, я так понял)... все классно, процедурка клевая (в других задачах меня устраивала)... прекрасно ловит всякие табы и ентеры, но почему-то не срабатывает с F-клавишами (наверное, они не диалоговые)... подскажите какую-нибудь другую процедурку, пожалуйста, или помогите написать собственную процедуру для onkeyup, чтоб не надо было делать одинаковый громоздкий onkeyup только в разных Edit'ах, а чтоб можно было один раз процедурку описать, а потом в каждом editX.onkeyup чисто одну строчку вписывать... просто я недавно программирую, учусь только, и еще не освоил написание собственных процедур... Заранее СПАСИБО, всем откликнувшимся! Это сообщение отредактировал(а) Kbl4AH - 4.5.2008, 21:41 |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
что-то вроде этого кода, который должен находиться в событии OnKeyPress или OnKeyDown
само собой, что свойство KeyPreview формы должно быть в True
почитай о привидении типов, оператора IS и AS и о RTTI |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Сделай одну и пропиши ее в каждом едите
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 1 Всего: 15 |
В принципе так и сделал... просто до этого ни разу свою процедуру не делал - оказалось не так сложно, как думал)))
но серавно мне вариант с перехватом клавиш больше нравицца... как все таки сделать перехват одной процедурой АБСОЛЮТНО ЛЮБЫХ клавиш? |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
разуй глаза Добавлено через 11 секунд http://forum.vingrad.ru/index.php?showtopi...t&p=1501153 |
|||
|
||||
| SAVANE |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 118 Регистрация: 20.7.2006 Где: Украина, Полтава Репутация: нет Всего: 1 |
Не уверен что про то спрашивают но
Свойства формы KeyPeview=True
Это сообщение отредактировал(а) SAVANE - 8.5.2008, 12:29 --------------------
Be not afraid of growing slowly, be afraid only of standing still! |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
vk_F2, vk_return, vk_escape, vk в справочной системе есть все коды виртуальных клавиш кстати если в гугле поискать по ключевому слову vk_return то вылезешь сюда http://delphi.about.com/od/objectpascalide/l/blvkc.htm |
|||
|
||||
| maximus666 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 30.12.2007 Репутация: нет Всего: нет |
Перехват абсолютно любых клавиш можно сделать поставив кейборд хук (дополнительная инфа есть в DRKB).
Для этого нужно написать простенькую DLL, код которой может быть следующий:
в коде программы достаточно импортировать функции SetHook и UnHook. Это сообщение отредактировал(а) maximus666 - 12.5.2008, 21:45 |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
При чём здесь DLL? Нужно в конкретной форме приложения ловить клавиши? а не в DLL
|
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 1 Всего: 15 |
Фига вы разогнались
2Акелла Не надо мне никакие актив контролы... Допустим у мну на форме пяток разных вариантов компонентов - я что, 5 раз условие писать буду? Мне надо чтобы форма улавливала нажатую клавишу без разницы какой компонент при этом активный... 2СаванЧто-то похожее на то, что мне нужно... Тока объясни на пальцах, что за свойство КейПревю, за что оно отвечает? 2Остальные уважаемые винградари А нет ни у кого сцылки на понятную начинающим доку по всяким сендерам, обжектам, активам, хендлам и т.п.? А то именно эта штука походу мне нужна... Просто работаю с БД Оракакл... Запросы сложные не требуцца, а с простыми напрягов - нет... Зато есть траблы в Делфи с формами, нажатиями клавиш и т.п. Просто надоело на каждой форме делать по несколько невидимых лэйбелов (меток) и писать кучу условий (типа - не прально работаешь, а скушай тада условие такое-то... реально код становицца фиговочитабельным), чтоб формы между собой по правилам воевали... З.Ы. Делфийским перцам Перебарывайте себя и не отвечайте новичкам - да ты, лошара, смотри туда-сюда... если лень или убивает ответить грамотно, то лучше ваще не отвечать... Это сообщение отредактировал(а) Kbl4AH - 15.5.2008, 22:03 |
|||
|
||||
| SAVANE |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 118 Регистрация: 20.7.2006 Где: Украина, Полтава Репутация: нет Всего: 1 |
В событии OnCreate формы напиши.
Дальше событие формы FormKeyPress Напиши условие
При этом в После зен пишеш тот код который нужно выполнить при нажатии F2 Нужно Другую кнопку обработать в процедуре FormKeyPress пиши еще одно условие к примеру
и так хоть всю клавиатуру. Где найти коды кнопок писал Akella --------------------
Be not afraid of growing slowly, be afraid only of standing still! |
||||||
|
|||||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 1 Всего: 15 |
2Саван. Мм, немножко не это спрашивал... Объясни мне, плиз, что это за свойство KeyPreview, что оно делает када включено и выключено?
|
|||
|
||||
| Qu1nt |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 18 Всего: 50 |
|
||||||
|
|||||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 1 Всего: 15 |
Краткость - сестра таланта;)
|
|||
|
||||
| Akella |
|
||||||||||||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
ДА НЕТ ЖЕ!!!!!!!!!! Я ТЕБЕ КОД ДАЛ ДЛЯ ФОРМЫ, А НЕ ДЛЯ 5-10-25 КОНТРОЛОВ!!!!!!!!
ЗАБЫЛ ДОПИСАТЬ, ЧТО В СОБИТИИ ФОРМЫ И НЕ ЗАБУДЬ Добавлено через 2 минуты и 18 секунд
ВОТ ИМЕННО ЭТО Я И ИМЕЛ ВВИДУ НЕУЖЕЛИ НЕ ПОНЯТНО ЭТО:
Добавлено через 3 минуты и 46 секунд
это свойство отвечает за приоритет улавливания клавиш, так сказать, если := True, то форма первая получает нажатие клавиши, а вотом передаёт дальше, если ты конечно не запретишь дальше передавать Добавлено через 4 минуты и 17 секунд кстати по поводу KeyPreView..... а что клавиша F1 на клаве выламана??????? Добавлено через 5 минут и 59 секунд
за свою практику я на винграде таких ответов ещё не видел Добавлено через 7 минут и 52 секунды Но и вы не ленитесь использовать поиск по форуму или интернету в целом, а ещё есть такое понятие, как справка ну и, может быть + переводчик. Добавлено через 12 минут и 35 секунд
ты про гугл слышал? тынц сюда |
||||||||||||||
|
|||||||||||||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 1 Всего: 15 |
2Акелла. Грамотно и доходчиво. Спасибо!
|
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Наконец-то
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |