powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Динамическое меню
25 сообщений из 64, страница 1 из 3
Динамическое меню
    #38968250
kot07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно ли сделать такое меню, которое строилось бы из запроса?
в mainmenu делаем только один элемент "Меню"
в "Меню" сами создаем элемент 1, а вот подменю элемента 1 создается динамически из результата запроса.
Я так понимаю нужен цикл который будет создавать subitem пока не дойдет до конца результата запроса + записывать имена из строки результата запроса в caption? Как в таком случае ко всему обращаться?
...
Рейтинг: 0 / 0
Динамическое меню
    #38968267
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Динамическое меню
    #38968548
kot07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так тут WinApi, я делаю в билдере
...
Рейтинг: 0 / 0
Динамическое меню
    #38968580
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kot07я делаю в билдере
А что ты называешь словом "обращаться"? Обычно достаточно при создании пунктов меню
назначить им обработчик OnClick. Больше с ними делать ничего не нужно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Динамическое меню
    #38968593
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kot07Возможно ли сделать такое меню, которое строилось бы из запроса?


Да, возможно.

kot07в mainmenu делаем только один элемент "Меню"
в "Меню" сами создаем элемент 1, а вот подменю элемента 1 создается динамически из результата запроса.
Я так понимаю нужен цикл который будет создавать subitem пока не дойдет до конца результата запроса + записывать имена из строки результата запроса в caption?

Да, всё так.

kot07Как в таком случае ко всему обращаться?

К меню особенно обращаться не нужно, меню генерирует WM_COMMAND с заданным идентификатором. Тебе нужно только назначать динамически идентификаторы из определённого диапазона и уметь их декодировать обратно в комманды из меню, пришедшего в запросе.

Всё довольно просто .
...
Рейтинг: 0 / 0
Динамическое меню
    #38968594
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kot07так тут WinApi, я делаю в билдере

Там тоже не сильно сложнее, функции API нужно заменить на соотв. функции VCL.
...
Рейтинг: 0 / 0
Динамическое меню
    #38969033
kot07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я думал можно как то проще сделать вот как то так у меня представлялось все это дело
while (!DataModule->ADOQuery->Eof)
MainMenu1->Items->Items[1]->CreateSubItem->Caption = 1 значению из результата запроса
...
Рейтинг: 0 / 0
Динамическое меню
    #38969037
kot07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но сделать вот так нельзя
...
Рейтинг: 0 / 0
Динамическое меню
    #38969055
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kot07вот как то так у меня представлялось все это дело
Ну примерно так оно и делается, но кому нужны пункты меню, которым не назначены
обработчики клика?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Динамическое меню
    #38969060
kot07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как то можно добавить их в цикл чтобы создавались? просто в под меню планируется выводить содержимое одного из столбцов таблицы, например название городов и при клике на город передавать в sql запрос значение Tag которое будет порядковому номеру при добавление
...
Рейтинг: 0 / 0
Динамическое меню
    #38969071
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kot07как то можно добавить их в цикл
Можно, разрешаю.

RTFM TMenuItem.Add().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Динамическое меню
    #38969178
kot07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получил в гриде таблицу, мне нужна 3 колонка http://www.floomby.ru/s2/CUKnFb
и как мне ее добавить в подменю "Выбрать"
...
Рейтинг: 0 / 0
Динамическое меню
    #38969186
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kot07как мне ее добавить в подменю "Выбрать"
В цикле, по одной. В чём твоя проблема?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Динамическое меню
    #38969188
kot07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не знаю как указать создание subitems в выбрать
...
Рейтинг: 0 / 0
Динамическое меню
    #38969189
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты прочитал справку пр методу TMenuItem.Add() как я уже говорил выше?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Динамическое меню
    #38969191
kot07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
void __fastcall TForm2::N2Click(TObject *Sender)
{
  TMenuItem *NewItem;
  MainMenu1->Items->Items[0]->Add();
  NewItem=...... Caption=DBGrid1->Columns[2];
  }

что писать вместо многоточия?
Да прочитал, там вот такой примерчик есть
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
TMenuItem *NewItem;
  // first create the separator
  NewItem = new TMenuItem(this); // If you change the AOwner (this) to MainMenu1->Items[1] and then you add the new menu you will get "Menu inserted twice"?  Doesn't happen in Delphi.
  NewItem->Name = "Separator";   // The owner will cleanup these menu items.
  NewItem->Caption = "-";
  // add the new item to the Windows menu
  MainMenu1->Items->Items[1]->Add(NewItem);

только билдер ругается на него и ничего не создает.
Нашел вот такой вот способ
Код: plaintext
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 / 0
Динамическое меню
    #38969197
kot07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
решил попробовать сначала создать subitem по последнему примеру
Код: plaintext
1.
2.
3.
4.
5.
6.
TMenuItem * a =  MainMenu1->Items[1].Items->CreateMenuItem();
TMenuItem * b =  new TMenuItem(a);
a->Caption = "Меню";
b->Caption = "Подменю";
MainMenu1->Items->Add(a);
a->Add(b);

по идеи должен создать item в item[1] или я не правильно пишу? при компиляции получаю вот такую ошибку
E2316 'CreateMenuItem' is not a member of 'TMenuItem' получается я не имею возможности создать элемент внутри элемента, так?
...
Рейтинг: 0 / 0
Динамическое меню
    #38969205
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kot07Нашел вот такой вот способ
Где нашёл?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Динамическое меню
    #38969211
kot07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на cyberforume, а что?
...
Рейтинг: 0 / 0
Динамическое меню
    #38969216
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kot07на cyberforume, а что?
То есть ты вместо примера из документации начал мучиться с кодом с какой-то помойки? Ню-ню...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Динамическое меню
    #38969217
kot07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я просто решил попробовать) код из справки работает но ничего не создает, по крайне мере видимого а при повторном нажатии выдает сообщение:

A component named Separator already exists.
...
Рейтинг: 0 / 0
Динамическое меню
    #38969339
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kot07я просто решил попробовать) код из справки работает но ничего не создает, по крайне мере видимого а при повторном нажатии выдает сообщение:

A component named Separator already exists.черным по белому написано: компонент с именем "Separator" уже существует
если с английским плохо translate.google.ru в помощь

в меню все добавляется
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
//---------------------------------------------------------------------------
void __fastcall TForm1::my_click(TObject *Sender)
{
        //
        Application->Terminate();

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button43Click(TObject *Sender)
{
        //
        TMenuItem* Item = new TMenuItem(this);
        Item->Caption="123";

        MainMenu1->Items->Add(Item);

        Item = new TMenuItem(this);
        Item->Caption="Exit";
        Item->OnClick = my_click;

        MainMenu1->Items->Items[0]->Add(Item);

}
//---------------------------------------------------------------------------

...
Рейтинг: 0 / 0
Динамическое меню
    #38969373
kot07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m_Sla
То что представили Вы работает вот так
http://data3.floomby.com/files/share/27_5_2015/7/rok8TLQKqE2HT1T9f59PHw.jpg
Точно так же работает пример с cyberforum представленный здесь 17692782 .
Мне нужно сделать вот так
http://www.floomby.ru/s2/yUKfnM это меню сделано вручную полностью, нужно сделать в меню "Выбор института" чтобы элементы добавлялись сами из бд
...
Рейтинг: 0 / 0
Динамическое меню
    #38969457
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так тоже добавляет


...
Рейтинг: 0 / 0
Динамическое меню
    #38969562
kot07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это делает представленный Вами код?магия какая-то)
...
Рейтинг: 0 / 0
25 сообщений из 64, страница 1 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Динамическое меню
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]