Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/22: Рейтинг темы: голосов - 22, средняя оценка - 4.55
Yeugene

Изменение стандартной реакции компонента на нажатие кнопки мыши.

14.02.2009, 19:05. Показов 4571. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер всем.
Подскажите пожалуйста каким образом изменить реакцию компонента (VCL C++ Builder) на нажатие правой кнопки мыши. Например для ComboBox.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.02.2009, 19:05
Ответы с готовыми решениями:

Как отследить нажатие правой кнопки мыши?
Здраствуйте, нужно сделать макрос для одной игры. Если человек нажал правую кнопку мыши(ну и конешно отпустил ее), то нужно программно...

Как сделать нажатие левой кнопки мыши по таймеру
Видел много программ по типу авто "кликеры" вот думал дай свою напишу хотел попробовать и тут на тебе сразу тупик на 1 ступени. Помогите...

Изменение курсора при зажатие кнопки мыши
В событие FormMouseDown прописано Form1->Cursor = crDrag;В событие FormMouseUp прописано Form1->Cursor = crArrow; Но курсор во время...

8
32 / 32 / 4
Регистрация: 29.12.2008
Сообщений: 75
15.02.2009, 10:25
Пишешь два обработчика событий нажатия правой кнопкой мыши на объекте. Пусть это будут функции Event1 и Event2.

Когда нужно будет назначить Event1 в качестве обработчика события щелчка мышью, добавь в программу следующую строку:

C++
1
ComboBox1->OnClick = &Event1;
Соответственно для Event2

C++
1
ComboBox1->OnClick = &Event2;
Остался только один момент. Event1 и Event2 лучше включить в класс основной формы. Для этого открываешь заголовочный файл формы (*.h) и в раздел public или private класса формы добавляешь прооипы функций
C++
1
2
void __fastcall TForm1::Event1(TObject *Sender);
void __fastcall TForm1::Event2(TObject *Sender);
1
Yeugene
15.02.2009, 22:35
Спасибо maximus09, сейчас попробую.

Добавлено через 32 минуты 31 секунду
Увы, срабатывает, но только при клике левой кнопкой мыши. Обработчик OnClick для ComboBox, не сообщает о том, какая клавиша была нажата, как, например, в Edit (OnMouseDown ).
0 / 0 / 0
Регистрация: 30.09.2009
Сообщений: 3
30.09.2009, 14:21
используй карту сообщений Windows
это наиболее быстрый и эффективный метод для решения подобного рода задач
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
30.09.2009, 17:57
метод кривавот, но попробуй так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  Application->OnMessage = AppMessage;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::AppMessage(tagMSG &Msg, bool &Handled)
{
  if (Msg.message == WM_RBUTTONDOWN)
  {
    int x1 = Left + ComboBox1->Left, x2 = x1 + ComboBox1->Width;
    int y1 = Top + ComboBox1->Top, y2 = (Height - ClientHeight) + y1 + ComboBox1->Height;
    if((x1 <= Msg.pt.x && Msg.pt.x <= x2) &&(y1 <= Msg.pt.y && Msg.pt.y <= y2)){
      // Обработка правой клавиши на комбике
      Handled = true;
    }
  }
}
//---------------------------------------------------------------------------
а еще самому стало интересно чей же hwnd возвращается в Msg, потому что в приложении ни у одного компонента такого нет... может кто знает из более продвинутых...
1
125 / 116 / 17
Регистрация: 27.02.2007
Сообщений: 291
30.09.2009, 20:36
Цитата Сообщение от VoodooMan Посмотреть сообщение
чей же hwnd возвращается в Msg
Из справки по TApplication::OnMessage
TApplication::OnMessage происходит, когда приложение получает сообщение Windows.
Из справки по tagMsg
hwnd - Дескриптор окна, которому посылают сообщение
Следовательно hwnd это дескриптор приложения. По-моему так.

Добавлено через 48 секунд
(Перевод мой )
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
01.10.2009, 09:55
АНК, проблема в том, что, если добавить еще и проверку Msg.hwnd == this->Handle, то кликаем на форме - работает, кликаем на комбике - нет, но это и не Handle комбика, проверял по всему проекту - нет такого hwnd, вот и стало интересно, чей это Handle...
0
125 / 116 / 17
Регистрация: 27.02.2007
Сообщений: 291
01.10.2009, 12:06
Цитата Сообщение от VoodooMan Посмотреть сообщение
проверку Msg.hwnd == this->Handle, то кликаем на форме - работает
Спору нет! Сам проверял когда-то... Но вот с TComboBox? - он же тоже потомок TWinControl... Я так далеко не ходил. Вроде ни к чему было.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
01.10.2009, 12:30
АНК, просто мой пример рабочий, но мне не нравиться топорностью какой-то... хотелось проверить - Handle комбика - работаем, нет - игнорируем...


Yeugene, кстати, а вам такой метод подходит или нет, а то мы тут оффтопим, а автор темы вообще молчит
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.10.2009, 12:30
Помогаю со студенческими работами здесь

FireMonkey: scrollbox не реагирует на нажатие кнопки мыши в области scrollbar
Есть scrollbox, необходимо при нажатии на кнопки и скролл выполнять определенные действия. Событие OnMouseUp не выполняется, если жать на...

Организация реакции объекта на нажатие кнопки мыши
Здравствуйте, товарищи!!! Хочу написать простенькую игрушку в стиле карточного пасьянса, при этом хочу задействовать ООП. Думаю, нужно...

Нет реакции на нажатие кнопки
Вообщем, объясните мне дураку, почему моя простейшая логика не хочет работать, а точнее условие принимает а нажатие кнопки не реагирует. Да...

Эмулировать нажатие кнопки мыши или нажатие клавиши на Web - странице
Здравствуйте. Как на эмулировать переходы по страницам на сайте, открытом в Интернет эксплорере!. Например: В определенные...

Работа со Swing JavaSE. Нет реакции на нажатие кнопки
Всем привет. Имеется следующая проблема: нет реакции программы при нажатии Button-а. ActionListener прописан правильно. Даже не представляю...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru