Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 20.05.2016
Сообщений: 4
1

Popup Menu и CheckListBox

21.05.2016, 14:13. Показов 1673. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. У меня есть код, который вызывает Popup Menu при нажатии на любой из нескольких CheckListBox:

C++
1
2
3
4
5
6
7
8
9
void __fastcall TMainForm::CheckListBoxOnMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
 TPoint pt;
 if (Button == mbRight)
 {
  GetCursorPos(&pt);
  PopupMenu->Popup(pt.x + 82,pt.y);
 }
Никак не могу написать код для N1 этой менюшки, выделяющий все пункты CheckListBox, в котором это меню (!) всплывает. Проблема именно в "котором". Само выделение идет через цикл, это понятно.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2016, 14:13
Ответы с готовыми решениями:

C++ Builder Popup Menu
Всем привет, есть форма на которой помещены PaintBox,Popup menu, на PaintBox есть круги, при...

Checkbox в popup menu
Добрый день, вопрос следующий: Есть мемо, в котором вбивается текст, в Label выводится количество...

C++ Builder Popup Menu
Добрый день в С++ Builder на PaintBox нарисованы фигуры и взавимости от размера окна они меняют...

Редактирование main и popup menu кнопкой
Только начал изучение билдера, возник вопрос, как с помощью кнопки или текстового поля добавить еще...

6
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
21.05.2016, 14:24 2
Есть же Sender, его и используй:
C++
1
2
TCheckListBox *box = static_cast<TCheckListBox*>(Sender);
// box указывает на тот компонент, где всплыло меню
И посмотри на метод CheckAll, может и без цикла обойдешься...
0
0 / 0 / 0
Регистрация: 20.05.2016
Сообщений: 4
21.05.2016, 14:29  [ТС] 3
Если так, то вылетает ошибка Access violation

C++
1
2
3
4
5
6
7
8
void __fastcall TMainForm::N1Click(TObject *Sender)
{
 TCheckListBox *box = static_cast<TCheckListBox*>(Sender);
 for (int i = 0; i < box->Items->Count; i++)
 {
  box->Checked[i] = true;
 }
}
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
21.05.2016, 15:08 4
А, тебе отсюда... Вот так:
C++
1
2
3
4
5
6
void __fastcall TForm1::N1Click(TObject *Sender)
{
    TPopupMenu *menu = (TPopupMenu*)static_cast<TMenuItem*>(Sender)->GetParentMenu();
    TCheckListBox *box = static_cast<TCheckListBox*>(menu->PopupComponent);
    box->CheckAll(cbChecked, false, true);
}

Не по теме:

Ну, или сразу:

C++
1
2
3
4
5
void __fastcall TForm1::N1Click(TObject *Sender)
{
    TCheckListBox *box = static_cast<TCheckListBox*>(PopupMenu->PopupComponent);
    box->CheckAll(cbChecked, false, true);
}
, если у тебя только одно меню всегда будет всплывать. Но я бы так не делал, по мне - надежнее получить ссылку на попап-меню так, как я показал в первом фрагменте кода, чем надеяться на то, что никогда ничего не изменится.

0
0 / 0 / 0
Регистрация: 20.05.2016
Сообщений: 4
21.05.2016, 16:47  [ТС] 5
Ругается на
C++
1
box->CheckAll(cbChecked, false, true);
[bcc32 Error] Unit1.cpp(552): E2015 Ambiguity between 'Data::Bind::Components::cbChecked' and 'Vcl::Stdctrls::cbChecked'
Full parser context
Unit1.cpp(549): parsing: void _fastcall TMainForm::N1Click(System::TObject *)
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
21.05.2016, 17:53 6
У меня БД не подключены к проекту, поэтому не ругается. Попробуй указать явно:
C++
1
box->CheckAll(Vcl::Stdctrls::cbChecked, false, true);
0
0 / 0 / 0
Регистрация: 20.05.2016
Сообщений: 4
21.05.2016, 18:46  [ТС] 7
Скомпилировалось удачно, но снова ошибка Access Violation при нажатии на N1. Прям беда какая-то с этим...
0
21.05.2016, 18:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2016, 18:46
Помогаю со студенческими работами здесь

Один PopUp menu на все memo
Ребят,как узнать имя TMemo с которого вызывается PopUpMenu что бы вышло Полученное имя...

Отмеченные строки ChecklistBox'a вывести в другой ChecklistBox
Собственно вопрос в заголовке. Код по сути написан: void __fastcall...

Popup Menu
Ситуация такая, необходимо написать popup меню, для win машин. Наткнулся на пару глюков с клиентом...

Popup menu
Ребят подскажите.В общем использую popup menu и у одного из его строк есть submenu.Как программно...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru