C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Кнопки на форме и их аналоги на клавиатуре
Parasit
  Отправлено: 09.03.2007, 22:18


Дежурный стрелочник

Группа: Участник
Сообщений: 68



Приведите пожалуйста пример сопоставления кнопки на форме программы и кнопки (при нажатии которой будет выполняться теже фу-и) на клавиатуре



Заранее Всем Спасибо
aquanet sk
Отправлено: 10.03.2007, 02:17


Станционный диспетчер

Группа: Участник
Сообщений: 87



Вход: Form1, Button1

Для неактивного приложения горячие клавиши:

В заголовочном файле .h ( его можно вызвать по Ctrl+F6 для C++Builder6) прописываем строки (указаны жирным шрифтом):
...
private:
void __fastcall TForm1::WMHotKey(TWMHotKey &);
public:
__fastcall TForm1(TComponent* Owner);

BEGIN_MESSAGE_MAP

MESSAGE_HANDLER(WM_HOTKEY,TWMHotKey,WMHotKey);

END_MESSAGE_MAP(TComponent);

...

В тексте программы (.cpp файл) пишем:
...
void __fastcall TForm1::FormCreate(TObject *Sender)
{

// Регистрируем комбинацию горячей клавиши, для примера Ctrl+R
RegisterHotKey(Handle,2577,MOD_CONTROL, int('R')); //2577 — любая цифра в заданном диапазоне
}
...

//эту функцию прописываем вручную
void __fastcall TForm1::WMHotKey(TWMHotKey &identificator)
{

if (identificator.HotKey== 2577)
{
Form1->Button1Click(Form1); //програмно нажимаем кнопку Button1, соответственно выполняются все операторы и функции, прописанные в обработчике события OnClick кнопки Button1
}

}


Для активного окна приложения:

v1. Есть специальный компонент HotKey, и возможно не только он...
v2. Можно в инспекторе объектов на вкладке Events у события OnKeyDown формы Form1 и всех других компонентов (которые могут получать фокус) указать событие Button1Click.
Parasit
Отправлено: 10.03.2007, 23:10


Дежурный стрелочник

Группа: Участник
Сообщений: 68



Спасибо ща пробовать буду

Вернуться в Вопросы программирования в C++Builder