Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798

Как назначить два HotKey на одно действие?

07.12.2015, 11:13. Показов 1493. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветы всем.

Подскажите решение. Есть RichEdit и PopupMenu к нему. На одном пункте контекстного меню завязан хоткей CTRL + T и вставляется стандартный ответ
Уважаемый пользователь, с сегодняшнего дня... и т.д.
А хочется чтобы по нажатию на комбинацию CTRL + SHIFT + T из буфера вставлялось Ф.И.О.
Уважаемый пользователь, Семён Петрович, с сегодняшнего дня... и т.д.
Тоесть, если я нажал CTRL + T, то вставка без Ф.И.О, а если нажал CTRL + SHIFT + T то с Ф.И.О.

Придумать ничего не могу, т.к. срабатывает какая-то одна назначеная горячая клавиша. Неужели остаётся лепить второй пункт меню? Не хочется этого делать.

Можно ли на эту функцию повесить 2 вышеперечисленых HotKey'я, чтобы по нажатию одной комбинации выполнялось одно условие, а по нажатию на другую - другое?

C++
1
2
3
4
5
6
7
8
9
10
#include <windows.h>
...
// Вставка заготовленого ответа------------------------------
void __fastcall TForm1::StandartMessage(TObject *Sender)
{
   if(GetAsyncKeyState(VK_RSHIFT) != 0 || GetAsyncKeyState(VK_LSHIFT) != 0)   // VK_MENU - Alt, VK_T = T
      RichEdit1->SelText = String("Уважаемый пользователь," + Clipboard()->AsText + " с сегодняшнего дня... и т.д.");
   else 
      RichEdit1->SelText = String("Уважаемый пользователь, с сегодняшнего дня... и т.д.";
}
Буду признателен за любую помощь.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.12.2015, 11:13
Ответы с готовыми решениями:

Как назначить действие мувику?
заранее извиняюсь за нубство, но всё же: в As2 я делал такую вот активность объектов-Мувиков: on (rollOver) { ...

Как назначить клавишу на действие
Например мне надо выполнить действие, например, мне надо сделать так, чтобы при нажатии на клавишу &quot;i&quot; выполнялся вывод текста...

Как назначить действие на пункт меню
Меню создано при формировании нового пустого проекта. Как назначить действие на пункт меню. Извините, я нуб. :) Спасибо. ...

3
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
07.12.2015, 11:37
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

Цитата Сообщение от Maestro Посмотреть сообщение
Буду признателен за любую помощь.
Можно добавить компонент ActionList, в его Action1 выбрать OnExecute обработку пункта меню и горячей назначить дополнительную комбинацию. А в самом обработчике пункта меню как-то так:
C++
1
2
3
    Caption = "Уважаемый пользователь, с сегодняшнего дня..";
  if(Sender->ClassNameIs("TAction"))
    Caption = "Уважаемый пользователь,Имярек, с сегодняшнего дня..";
То-есть фильтровать, откуда пришел вызов. Но в меню подсказкой хот-кей все равно остается первая комбинация... .
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33184 / 21482 / 8231
Регистрация: 22.10.2011
Сообщений: 36,849
Записей в блоге: 12
07.12.2015, 11:39
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

Maestro, назначь свой HotKey:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// класс формы:
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    // ...
private:    // User declarations
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
 
    int c_s_T;
 
    void __fastcall InsertMessage(bool add_name = false);
 
    MESSAGE void __fastcall WMHotKey(TWMHotKey &Message);
    BEGIN_MESSAGE_MAP
        VCL_MESSAGE_HANDLER(WM_HOTKEY, TWMHotKey, WMHotKey)
    END_MESSAGE_MAP(TForm)
};
Реализация:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    c_s_T = ::GlobalAddAtom(_T("Ctrl_Shift_T"));
    ::RegisterHotKey(Handle, c_s_T, MOD_CONTROL | MOD_SHIFT, 'T');
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
    ::UnregisterHotKey(Handle, c_s_T);
    ::GlobalDeleteAtom(c_s_T);
}
 
void __fastcall TForm1::WMHotKey(TWMHotKey &Message)
{
    TForm::Dispatch(&Message);
    if (Message.HotKey == c_s_T)
    {
        InsertMessage(true); // добавляешь сообщение с именем
    }
}
 
void __fastcall TForm1::InsertMessage(bool add_name)
{
    RichEdit1->SelText =
        String().sprintf(_T("Уважаемый пользователь, %sс сегодняшнего дня... и т.д."),
        add_name ? Clipboard()->AsText + " " : String(" "));
}
 
void __fastcall TForm1::go1Click(TObject *Sender) // это твой пункт меню
{
    InsertMessage();
}
1
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
07.12.2015, 12:32  [ТС]
volvo, nick42, Ребят, спасибо вам, всё получилось легко и просто.

Вопрос решён.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.12.2015, 12:32
Помогаю со студенческими работами здесь

Как назначить действие при отмене?
Добрый день. Подскажите есть часть кода (setvar &quot;clayer&quot; Name_layer_tekuch) (command &quot;_copy&quot; nm_stoleshka...

Как на кнопку свернуть назначить свое действие?
Подскажите мне надо сделать так, чтобы при нажатии на кнопку свернуть, форма не сворачивалась, а выполняла какое-то другое...

Как можно на одно свойство css, сразу назначить несколько значений
.css({ 'display': '-webkit-flex', /*для safary*/ 'display':...

Как написать в одно действие?
Добрый день, подскажите пожайлуста как написать код типа: $title = $_; $title =~s/\@\T\s*(.*)/$1/i; В одно действие. То...

Назначить действие к кнопке
Поздскажите как сделать, чтобы кнопки работали по назначению. например что-бы при нажатии на кнопку ВВОД НОВОГО СОТРУДНИКА в таблицу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru