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

Popup Menu и CheckListBox

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

Студворк — интернет-сервис помощи студентам
Здравствуйте. У меня есть код, который вызывает 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.05.2016, 14:13
Ответы с готовыми решениями:

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

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

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

6
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,901
Записей в блоге: 12
21.05.2016, 14:24
Есть же 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  [ТС]
Если так, то вылетает ошибка 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
 Аватар для volvo
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,901
Записей в блоге: 12
21.05.2016, 15:08
А, тебе отсюда... Вот так:
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  [ТС]
Ругается на
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
 Аватар для volvo
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,901
Записей в блоге: 12
21.05.2016, 17:53
У меня БД не подключены к проекту, поэтому не ругается. Попробуй указать явно:
C++
1
box->CheckAll(Vcl::Stdctrls::cbChecked, false, true);
0
0 / 0 / 0
Регистрация: 20.05.2016
Сообщений: 4
21.05.2016, 18:46  [ТС]
Скомпилировалось удачно, но снова ошибка Access Violation при нажатии на N1. Прям беда какая-то с этим...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.05.2016, 18:46
Помогаю со студенческими работами здесь

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

Один PopUp menu на все memo
Ребят,как узнать имя TMemo с которого вызывается PopUpMenu что бы вышло Полученное имя Memo-&gt;CopyToClipboard(); //копируем...

Отмеченные строки ChecklistBox'a вывести в другой ChecklistBox
Собственно вопрос в заголовке. Код по сути написан: void __fastcall TForm1::CheckListBox1ClickCheck(TObject *Sender) { int i; ...

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru