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

MainMenu узнать Items конкретного пункта

19.05.2018, 21:35. Показов 2690. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, как считать в переменную Items конкретного пункта меню, при этом этот конкретный пункт нам не известен. К примеру у меня есть в меню список товаров (Конкретно только название конфет). Если зайти через меню администратора, я захочу отключить конкретное название конфет. В ComboBox выбираю название конфетки и она должна исчезнуть из пункта меню. Кто знает как реализовать. Возможен какой-то поиск по MainMenu->Name?

Добавлено через 1 час 40 минут
Ребята, помогите...!!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.05.2018, 21:35
Ответы с готовыми решениями:

Отследить нажатие пункта в компоненте MainMenu
Ребята подскажите, пожалуйста, по такому вопросу. У меня есть компонент MainMenu, я хочу отследить когда нажат конкретный пункт этого...

Узнать по какому итему Mainmenu произошел клик.
Доброго времени суток. Суть в том что элементы меню могут добавляться, и поэтому необходимо узнать какой именно элемент был кликнут.

Можно ли узнать порядковый номер пункта меню по его имени?
MainMenu1->Items->Items Как узнать значение переменной i для пункта меню с именем, например, "mnuA"? Это нужно для добавления...

3
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
20.05.2018, 00:13
Вот пример для простого меню (список конфет по первому пункту)__
C++
1
2
3
4
5
6
     TStringList *sL = new TStringList; int k;
     for(int i=0;i<MainMenu1->Items->Items[0]->Count;i++)
      sL->Add(MainMenu1->Items->Items[0]->Items[i]->Caption) ;
     if((k=sL->IndexOf(ComboBox1->Text))>=0) 
       MainMenu1->Items->Items[0]->Delete(k);
     delete sL;
Если структура меню сложнее - сложнее и поиск (в несколько циклов).
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33378 / 21502 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 11
20.05.2018, 00:30
Лучший ответ Сообщение было отмечено Uucyc как решение

Решение

Я бы написал поиск вот так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
TMenuItem *SearchIt(TMenuItem *it, String s)
{
    TMenuItem *found = 0;
    for (int i = 0; i < it->Count && !found; i++)
    {
        TMenuItem *v = it->Items[i];
        if(v->Caption == s) found = v;
        else if(v->Count > 0)
        {
            found = SearchIt(v, s);
        }
    }
    return found;
}
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    TMenuItem *it = 0;
    MainMenu1->AutoHotkeys = maManual; // чтобы амперсанды не мешались
 
    for (int i = 0; i < MainMenu1->Items->Count && !it; i++)
    {
        it = SearchIt(MainMenu1->Items->operator [](i), Edit1->Text);
    }
    if(it)
    {
        ShowMessage(it->Caption); // собственно, указатель на MenuItem с заданным Caption-ом у тебя есть - это то, что ты просил.
    }
}
Добавлено через 50 секунд
Цитата Сообщение от nick42 Посмотреть сообщение
(в несколько циклов)
Рекурсия должна быть, меню может быть и с подменюшками...
1
0 / 0 / 0
Регистрация: 07.11.2017
Сообщений: 53
20.05.2018, 01:16  [ТС]
volvo, Спасибо огромное.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.05.2018, 01:16
Помогаю со студенческими работами здесь

Отключение пункта MainMenu по тексту Edit1.text
Добрый день! Пишу программу и столкнулся с такой проблемой: У меня есть форма Form1 в ней есть edit1 и edit2 - на ней я сделал...

Ошибка "System.Windows.Forms.MainMenu" не содержит определение для "Items"
Доброго времени суток.Есть функция которая добавляет в StripMenu новые пункты: private void InitializeMenuStrip() { ...

MainMenu - как узнать индекс нажатого меню?
Доброе утро, форумчане! Встретился с интереным для себя вопросом: А как узнать id элемента из MainMenu, который нажал пользователь? В...

Как узнать, какой Items выбран в ComboBox?
Народ подскажите, как узнать какой Items выбран в ComboBox? Зарания спасибо.

Как узнать вес конкретного каталога?
Как узнать вес определенного файла, я знаю. А вот как узнать вес каталога? ведь в свойствах пишут же сколько он весит. В интернете пишут...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru