Форум: "Начинающим";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];
ВнизДинамическое создание попап-меню Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.042 c