![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Alexzz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 9.4.2007 Где: Латвия Репутация: 1 Всего: 1 |
Дано:
На форме лежит Edit1. Майнменю не должно быть. Задача: По нажатию клавиш ALT+M выполнить Edit1.Text:='Мама'; Вопрос: Как создать событие по нажатию клавиш ALT+буква? Экспериментировал с OnKeyPress - он вообще не вызывается при нажатии комбинаций с ALT. Пробовал с OnKeyDown - он вызывается один раз при нажатии ALT, передавая код 18, затем вызывается второй раз при нажатии второй клавиши. Теоретически могу наворотить по этим событиям кучу всего, создать флаг, который бы переходил в true при нажатии ALT и в false при отпускании по событию OnKeyUp, и обрабатывать остальные коды учитывая состояние флага, но чувствую, что должен быть какой-то более простой способ. |
|||
|
||||
| ne_tru_e |
|
|||
![]() Приношу жертвы MS ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 20.1.2008 Репутация: нет Всего: 4 |
Читаем справку дельфи:
type TKeyEvent = procedure (Sender: TObject; var Key: Word; Shift: TShiftState) of object; property OnKeyDown: TKeyEvent; The Shift parameter indicates whether the Shift, Alt, or Ctrl keys are combined with the keystroke. То есть параметр Shift показывает состояние клавиш Shift, Alt, Ctrl. Тип ShiftState - множество. type TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble); Таким образом при нажатии проверяем вместе со значением Key также и значение Shift:
|
|||
|
||||
| Alexzz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 9.4.2007 Где: Латвия Репутация: 1 Всего: 1 |
Спасибо конечно, но это не совсем то, о чём я спрашивал. Вот например есть такой компонент как Actionlist, но у него в списке горячих клавиш к сожалению нет комбинаций ALT+буква.
Пока временно использовал onkeydown и onkeyup проверяя переменную shift, но есть одно маленькое неудобство - при каждом нажатии в динамиках звучит "дынь", как буд-то ткнул во что-то неактивное. Малость напрягает. Обнуление key не помогает. |
|||
|
||||
| Christoph |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 667 Регистрация: 23.1.2008 Где: Харьков Репутация: 5 Всего: 11 |
P.S хочу плюсик Это сообщение отредактировал(а) Christoph - 3.12.2008, 22:46 -------------------- ![]() |
|||
|
||||
![]()
|
| Правила форума "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. |