Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.03;
Скачать: CL | DM;

Вниз

Динамическое создание попап-меню   Найти похожие ветки 

 
Vitebsky   (2006-11-15 16:12) [0]

Есть компонент (строка ввода). Мне нужно добавить для него попап-меню. В смысле, в самом компоненте. Меню создать у меня получилось. Но первые два пункта мне нужно сделать с подменю, и тут возникают проблемы, т.е. программа выполнила невыполнимое и т.п.

Делаю я так:
// в описании переменных
FPopupMenu: TPopupNenu;
.....

// в конструкторе
TempItem: TMenuItem;
...
FPopupMenu:=TPopupMenu.Create(Self);
TempItem:=TMenuItem.Create(Self);
TempItem.Name:="значение";
TempItem.Caption:="значение";
FPopupMenu.Items.Add(TempItem);
// последние 4 строчки повторяются несколько раз

// для подменю
TempMenu: TPopupMenu;
TempMenu:=TPopupMenu.Create(Self);
TempItem:=TMenuItem.Create(Self);
TempItem.Name:="значение";
TempItem.Caption:="значение";
TempMenu.Items.Add(TempItem);
// последние 4 строчки повторяются несколько раз
// затем
FPopupMenu.Items.Add(TempMenu.Items);

// в деструкторе
FPopupMenu.Free;

вот... может, я что-то делаю не так?..


 
Johnmen ©   (2006-11-15 17:40) [1]

// для подменю
TempItem:=TMenuItem.Create(Self);
TempItem.Name:="значение";
TempItem.Caption:="значение";
TempMenu.Items.Add(TempItem);
...
TempItem2:=TMenuItem.Create(Self);
TempItem2.Name:="значение";
TempItem2.Caption:="значение";
TempItem.Add(TempItem2);
...

Т.е. добавлять подменю надо добавлением дочернего Item к существующему.


 
Vitebsky   (2006-11-15 17:52) [2]

У меня подменю будет у двух первых пунктов. Если я правильно понял, нужно делать:

....
FPopupMenu.Items[0].Add(TempItem1);
FPopupMenu.Items[0].Add(TempItem2);
FPopupMenu.Items[0].Add(TempItem3);
...
FPopupMenu.Items[1].Add(TempItem1);
FPopupMenu.Items[1].Add(TempItem2);

так?


 
Johnmen ©   (2006-11-15 18:39) [3]

Не надо использовать абсолютную индексацию пунктов меню.
Надо использовать относительную для каждого уровня меню. Индекс пункта в подменю определяется относительно родительского пункта меню. (Item.Items[x]))

FPopupMenu.Items.Add(TempItem1);
FPopupMenu.Items.Add(TempItem2);
TempItem1.Add(TempItem1_1);
TempItem1.Add(TempItem1_2);
TempItem1.Add(TempItem1_3);
TempItem2.Add(TempItem2_1);
TempItem2.Add(TempItem2_2);


 
Vitebsky ©   (2006-11-16 00:57) [4]

А в чём разница? И такой метод плохо подходит, если мне нужно будет (а мне нужно будет) добавить пунктов во втором подменю. Хм...



Страницы: 1 вся ветка

Текущий архив: 2006.12.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.099 c
5-1144509756
SaFy
2006-04-08 19:22
2006.12.03
Прозрачный Edit


2-1163420289
Juju
2006-11-13 15:18
2006.12.03
Передвижение записей "вверх" и "вниз". Способ реализации...


10-1126014043
AlexeyMir
2005-09-06 17:40
2006.12.03
событие в ком-объекте


1-1161455953
andry1981
2006-10-21 22:39
2006.12.03
массив форм


1-1161673010
Чапаев
2006-10-24 10:56
2006.12.03
Про многоязычное приложение... ETM.