Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 25.07.2014
Сообщений: 32
1

Создание и удаление пунктов меню динамически

28.07.2014, 11:48. Показов 3483. Ответов 8
Метки нет (Все метки)

Создание и удаление пунктов в MainMenu не через дизайнер RAD Studio
А кодовым вариантом

P.S
Чтобы потом они сами создавались и удалялись в зависимости от условия
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.07.2014, 11:48
Ответы с готовыми решениями:

Добавление, удаление пунктов главного меню
Создайте новый проект. В главную форму включите следующие компоненты: Главное меню, многострочный...

удаление/добавление пунктов меню в админке
Доброго времени суток. Мне нужно добавить возможность удаления, добавления пунктов меню на моем...

Деактивация или удаление пунктов меню листа
Добрый день! Подскажите, пожалуйста, как сделать не активным "удалить" во время вызова меню листа....

Удаление пунктов меню в Exel средствами VBA
Добрый день. Необходимо написать программу: "Создать программным путем пользовательскую панель...

8
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
28.07.2014, 12:38 2
C++
1
2
3
4
5
6
TMenuItem * a =  MainMenu1->CreateMenuItem();
TMenuItem * b =  new TMenuItem(a);
a->Caption = "Меню";
b->Caption = "Подменю";
MainMenu1->Items->Add(a);
a->Add(b);
Создавать примерно так, но надо для каждого будет описывать событие клика.
0
Модератор
7160 / 4668 / 1966
Регистрация: 21.01.2014
Сообщений: 19,787
Записей в блоге: 3
28.07.2014, 13:24 3
Создание:
C++
1
2
3
4
5
6
7
8
TMenuItem *mnu = new TMenuItem(MainMenu1);
mnu->OnClick = MnuClick;
mnu->Name = "NemMnu" + IntToStr(MainMenu1->Items->Count);
mnu->Caption = "Новое меню " + IntToStr(MainMenu1->Items->Count);
//mnu->Name = "NemMnu" + IntToStr(mnuOne->Count + 1);
//mnu->Caption = "Новое меню " + IntToStr(mnuOne->Count + 1);
MainMenu1->Items->Add(mnu);
//mnuOne->Insert(mnuOne->Count,mnu);
Удаление:
C++
1
2
MainMenu1->Items->Delete(4);
//mnuOne->Delete(1);
Закомментаренный код применяется для создания/удаления подпунктов какого-либа пункта главного меню (в примере этот пункт главного меню имеет свойство Name == mnuOne). Открытый код - для создания/удаления пунктов главного меню
Функцию MnuClick создаем и включаем в класс формы самостоятельно.
0
0 / 0 / 0
Регистрация: 25.07.2014
Сообщений: 32
28.07.2014, 13:46  [ТС] 4
Вчера делал:
Если нужная папка не найдена пункт просто блокируеться
Хороший вариант когда мало пунктов

D1973,
Если нужная папка не найдена нужный пункт меню удаляеться
Если папка найдена нужный пункт создаётся
И это все должно делаться автоматически,без участия пользователя!

Похожих примеров я не нашел
0
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
28.07.2014, 13:54 5
Цитата Сообщение от Angullar Посмотреть сообщение
Если нужная папка не найдена нужный пункт меню удаляеться
Если папка найдена нужный пункт создаётся
И это все должно делаться автоматически,без участия пользователя!
Похожих примеров я не нашел
Ты можешь создать в графическом редакторе кнопку,которая тебе нужна,а при запуске приложения проверять наличие папки по указанному пути и выставлять свойство visible в true или false.
C++
1
N1->Visible = DirectoryExists("C:\\Папка\\Твоя_папка"); // где N1 имя созданной тобой кнопки в MainMenu
0
Практикантроп
4682 / 2601 / 497
Регистрация: 23.09.2011
Сообщений: 5,584
28.07.2014, 14:11 6
Цитата Сообщение от Angullar Посмотреть сообщение
Если нужная папка не найдена нужный пункт меню удаляеться
Если папка найдена нужный пункт создаётся
И это все должно делаться автоматически,без участия пользователя!
На мой взгляд, - лучше установить "видимость" пунктов меню в зависимость от события "папка присутствует", чем морочиться с созданием пунктов и прописывания им процедур (пример - предыдущий пост).
0
0 / 0 / 0
Регистрация: 25.07.2014
Сообщений: 32
28.07.2014, 14:20  [ТС] 7
DeadHipo,сейчас подожди через таймер попробую что будет

Добавлено через 1 минуту
nick42,можно пример

Добавлено через 6 минут
DeadHipo,Через таймер работает!
0
Практикантроп
4682 / 2601 / 497
Регистрация: 23.09.2011
Сообщений: 5,584
28.07.2014, 14:27 8
Цитата Сообщение от Angullar Посмотреть сообщение
nick42,можно пример
C++
1
2
3
4
5
6
void __fastcall TForm1::FormPaint(TObject *Sender)
{
   bool vi = DirectoryExists(".\\test");
   N2->Visible = vi ;
   N3->Visible = !vi ;
}
0
Модератор
7160 / 4668 / 1966
Регистрация: 21.01.2014
Сообщений: 19,787
Записей в блоге: 3
28.07.2014, 14:38 9
Ну если тебя все-таки интересует создание и удаление меню в зависимости от наличия/отсутствия папки то вот так как-то...

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
30
31
32
33
34
35
36
int iTmp = -1; //Индекс создаваемого пункта меню
bool bTmp = false;
...
//---------------------------------------------------------------------------
void __fastcall TForm1::MnuClick(TObject *Sender)
{
   ShowMessage(((TMenuItem *)Sender)->Caption);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  if(DirectoryExists("C:\\TMP\\111"))
   {
     if(! bTmp)
      {
        TMenuItem *mnu = new TMenuItem(MainMenu1);
        mnu->OnClick = MnuClick;
        mnu->Name = "NemMnu" + IntToStr(MainMenu1->Items->Count);
        mnu->Caption = "Folder 111";
        iTmp = MainMenu1->Items->Count;
        bTmp = true;
        MainMenu1->Items->Add(mnu);
      }
     else return;
   }
  else
   {
     if(bTmp)
      {
        TMenuItem *ItemToDelete = MainMenu1->Items->Items[iTmp];
        delete ItemToDelete;
        bTmp = false;
      }
   }
  Application->ProcessMessages();
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.07.2014, 14:38

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Создание пунктов меню
Не могу создать пункты меню, свойство items заблокировано и не дает сделать меню. Как сделать...

Создание невложенных пунктов контекстного меню
Здравствуйте. Требуется создать пункт в контекстном меню для файлов одного расширения (скажем,...

Вывод меню из базы. Создание пунктов в админке
Здравсвуйте. Ни как не могу нагуглить как хранить и выводить меню из базы mysql с помощью php. А...

Запрограммировать меню из 3-х пунктов: создание папки, файла, ссылки
Нужна помощь с одним заданием. Буду премного благодарен. Итак, суть: Написать командный файл,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.