Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Горячие клавиши на форме


Автор: AHgpeu 24.5.2007, 14:27
Подскажите как в делфи на форму добавить событие какое-то при нажатии горячих клавиш..
Ctrl+X, например
Спасибо!

Автор: Snowy 24.5.2007, 14:51
Брось на форму TActionManager.
Создай новый Action и назначь ему ShortCut

Автор: Sunvas 24.5.2007, 14:52
AHgpeu, юзай поиск! Неоднократно обсуждалось.
Вот к примеру: http://forum.vingrad.ru/forum/topic-152735.html

Автор: AHgpeu 24.5.2007, 15:14
бросил TActionManager.
че с ним дальше делать-не знаю))

Автор: Snowy 24.5.2007, 15:19
Кликни по нему 2 раза и добавь новый Action

Автор: AHgpeu 24.5.2007, 15:27
сорри шо туплю..
но как терь назначить какое-то событие при нажатии этих клавиш?*
Все!
сэнк! разобрался...
Событие OnExecute

Автор: Snowy 24.5.2007, 15:32
Слева - в окошке Object TreeView найди ActionManager.
В нём будут созданные тобой экшены. Выбери нужный.
У Action'a есть пропертя ShortCut - вот и выбери там нужное сочетание.
В событиях у Actiona создай событие OnExecute - там пиши нужный код.

Добавлено через 9 минут и 23 секунды
user posted image
1. Бросаешь на форму ActionManager. Тыкаешь в него 2 раза. Вылазит окно редактирования действий.
2. Нажимаешь кнопку "Новое действие". Можешь создать несколько.
3. Это список созданных действий. Выбери одно из них и оно отобразится в инспекторе объектов.
4. Отредактируй пропертя действия как хошь. Создай в действиях событие OnExecute и пропиши туда свой код.
5. Вот здесь указывается твой хоткей.
6. Можешь выбирать действия, не открывая окно, а прямо в Object TreeView.

Автор: ils 24.5.2007, 16:29
А можно еще сделать по-другому smile 

У формы ставишь KeyPreview := True
Далее создаешь обработчик OnKeyDown у формы. В нем пишешь

Код

procedure TMyMegaProgramForm.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if ssCtrl in Shift then
        case Key of
        VK_INSERT: InsertButtonPressedProcedure;
        VK_X: CtrlXPressedProcedure;
        ord('A'): ButtonAPressed; // Но тут придется ловить каждый символ, что написан на кнопке клавы
        end;
end;


Но конечно, у экшенов есть свои преимущества.

Автор: ilya198293 7.8.2007, 06:10
А как можно сделать чтоб не зависимо от активного компонента при нажатии кнопки Enter нажималась определённая кнопка?

Автор: ilya198293 7.8.2007, 12:01
Всё получилосьsmile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)