Поиск:

Ответ в темуСоздание новой темы Создание опроса
> компинация хоткеев 
:(
    Опции темы
Grom
Дата 28.8.2006, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 17.8.2006
Где: Москва

Репутация: 1
Всего: 1



искал по форуму, но  так не разобрался до конца. и TMemo есть OnKeyDown. Как сделать чтобы по нажатию в TMemo происходило тоже самое что и по кнопке Tbuttons ?

Код

void __fastcall TForm1::Memo1KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
 if ((Key==VK_CONTROL)&&(Key==VK_RETURN))
ShowMessage("Комбинация нажата");
}


Но так нельзя, потому что в Key только код одной клавиши  smile 
--------------------
Хостинг, Vds, Dedicated serve, регистрация доменов (RU,com,net,org) - обращаться в icq.
PM MAIL   Вверх
Bima
Дата 28.8.2006, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



присвой точно такой же эвентс в Мемо, как и на кнопке (прямо в проекте) или наоборот, смотря где код написал


--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
Romikgy
Дата 28.8.2006, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



KeyDown или KeyUp там есть


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Bima
Дата 28.8.2006, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



Попробуй вот этот код:
Код

void __fastcall TForm1::Memo1KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
TShiftState MyKey;
MyKey<<ssCtrl;
if (((Shift == MyKey) & (Key==VK_RETURN)) | (Key==VK_RETURN))
   {
   Button1(Sender);
   ShowMessage("Комбинация нажата");
   }
}



--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
Grom
Дата 28.8.2006, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 17.8.2006
Где: Москва

Репутация: 1
Всего: 1



Цитата

присвой точно такой же эвентс в Мемо, как и на кнопке (прямо в проекте) или наоборот, смотря где код написал

 так не интересно smile


Bima, спасибо, почти помогло smile Поясни ещё пожалуйсто:

Код

void __fastcall TForm1::Memo1KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
TShiftState MyKey; //что это значит ?
MyKey<<ssCtrl;     //и это тоже :)
if (((Shift == MyKey) & (Key==VK_RETURN)))
   {
   //Button1(Sender); //не работает. нет функции такой
   ShowMessage("Комбинация нажата");
   }
}


Это сообщение отредактировал(а) Grom - 28.8.2006, 16:01
--------------------
Хостинг, Vds, Dedicated serve, регистрация доменов (RU,com,net,org) - обращаться в icq.
PM MAIL   Вверх
Link90
Дата 28.8.2006, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


"Битый" пиксель
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 25.11.2005
Где: Иркутск - середин а земли!

Репутация: 3
Всего: 7



насколько я понял, ты хочешь зарегить свои Хоткеи.
Код

Сначала регистрируем горячую клавишу:
bool RHKret = RegisterHotKey(Form1->Handle,         // Handle окна, которому отправлять сообщения WM_HOTKEY
                             0x00F,                 // УСЛОВНЫЙ идентификатор горячего ключа
                             MOD_ALT + MOD_CONTROL, // модификаторы
                             VK_RETURN              // код клавиши
                             );

if (RHKret) // если всё о'кей
        {
        ShowMessage("Hot Key Registred");
        }

Затем размещаем на Form1 TApplicationEvents и в OnMessage пишем:
if (Msg.message == WM_HOTKEY) // сообщение наше
        {
        if (Msg.wParam == 0x00F) // идентификатор наш
                {
                ShowMessage("www.sources.ru"); // громко кричим "уря"
                }
        }

Когда горячая клавиша больше не нужна, отключаем ее:
UnregisterHotKey(Form1->Handle, // Handle окна
                 0x00F          // наш идентификатор горячего ключа
                 );


Взято с сайта www.sources.ru
PM MAIL ICQ   Вверх
Grom
Дата 28.8.2006, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 17.8.2006
Где: Москва

Репутация: 1
Всего: 1



Link90, спасибо, это я уже читал. Мне не глобальные хоткеи нужны. только тогда когда приложение активно.

PS кстате, как определить свернута-ли программа или развёрнута ?
--------------------
Хостинг, Vds, Dedicated serve, регистрация доменов (RU,com,net,org) - обращаться в icq.
PM MAIL   Вверх
Romikgy
Дата 28.8.2006, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



WindowState
у формы

ЗЫ один топик один вопрос!


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Bima
Дата 29.8.2006, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



Цитата

>Цитата
>присвой точно такой же эвентс в Мемо, как и на кнопке (прямо в проекте) или наоборот, смотря где >код написал
так не интересно 

Со временем поймешь, что чем короче код, то легче его отлаживать и стабильней он работает.

Цитата

Bima, спасибо, почти помогло  Поясни ещё пожалуйсто:


Справка есть smile
вот дословно из справки TShiftState - indicates the state of the Alt, Ctrl, and Shift keys and the mouse buttons. То есть указывает состояние дополнительных клавишь (Alt, Ctrl, и Shift) и еще кнопки мыши.
TShiftState может принимать значения:
ssShift        Клавиша Shift
ssAlt           Клавиша Alt
ssCtrl          Клавиша Ctrl
ssLeft         Левая кнопка мыши
ssRight       Правая кнопка мыши
ssMiddle     Средняя кнопка мыши
ssDouble    Двойной клик на мыши
Код

void __fastcall TForm1::Memo1KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
TShiftState MyKey; //создаем переменную основанную на классе TShiftState
MyKey<<ssCtrl;     //В эту переменную заносим клавишу Ctrl
if (((Shift == MyKey) & (Key==VK_RETURN))) //проверяем нажата ли Ctrl+Enter
   {
   //Button1(Sender); //не работает. нет функции такой (Если есть кнопка Button1, то должно работать)
   ShowMessage("Комбинация нажата"); // Выводим сообщение
   }
}




--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
Grom
Дата 29.8.2006, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 17.8.2006
Где: Москва

Репутация: 1
Всего: 1



Bima, спасибо большое, только вот Бутон1 есть, а функция не вызывается smile вот скрин
--------------------
Хостинг, Vds, Dedicated serve, регистрация доменов (RU,com,net,org) - обращаться в icq.
PM MAIL   Вверх
Bima
Дата 29.8.2006, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



Скрин не посмотрел, что то сервис webfile не работает. Но предвижу твою ошибку и попытаюсь исправить.
Допустим есть кнопка Button1 и у нее есть событие (евентс) по нажатии кнопки мыши:
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
//наш код
ShowMessage("Тестовое сообщение при нажатии кнопки"); // Выводим сообщение
}

что бы вызвать этот эвентс, нужно в коде программы написать:
Код

Button1Click(Sender);

Я когда испытывал твой пример эвентс по дургому назвал, вот отсюда и ошибка.
Если событие void __fastcall TForm1::Button1Click(TObject *Sender) не создать, а создать только кнопку, тоже выскочит ошибка (нет такой функции).

Теперь твой код с учетом моих исправлений:
Код

void __fastcall TForm1::Memo1KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
TShiftState MyKey; //создаем переменную основанную на классе TShiftState
MyKey<<ssCtrl;     //В эту переменную заносим клавишу Ctrl
if (((Shift == MyKey) & (Key==VK_RETURN))) //проверяем нажата ли Ctrl+Enter
   {
   Button1Click(Sender); //вызов функции, которая находится в эвансе на кнопке
   ShowMessage("Комбинация нажата"); // Выводим сообщение
   }
}


Это сообщение отредактировал(а) Bima - 29.8.2006, 13:55


--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
Grom
Дата 29.8.2006, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 17.8.2006
Где: Москва

Репутация: 1
Всего: 1



Bima, ну чё сказать... респект! спасибо за помощь !
--------------------
Хостинг, Vds, Dedicated serve, регистрация доменов (RU,com,net,org) - обращаться в icq.
PM MAIL   Вверх
Bima
Дата 29.8.2006, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



Да незачто smile

P.S. а иконка у тебя смешная :-)

конец темы!!!!!!!!!!!!!!!!!!


--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0523 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.