![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема работы с TMainMenu [D6, XP]
Volf_555 © (2005-12-12 18:56:00)Есть MainMenu1. В нём есть несколько пунктов. Один из них называется "Тип".
Как мне работать с подпунктами "Тип" - то есть как удалять и добавлять новые значения?
Плохиш (2005-12-13 18:59:00) [1]
> Volf_555 (13.12.05 18:44) [8]
Вот это
>a:=TMenuItem.Create(MainMenu1);
Надо перенести в тело цикла вместоa.Clear
Volf_555 (2005-12-13 18:44:00) [2]Пишу следующее (где w - это список строк TStringList):
a:=TMenuItem.Create(MainMenu1);
for e:=0 to w.Count-1 do
begin
a.Clear;
a.Caption:=w.Strings[e];
MainMenu1.Items.Items[2].Items[e].Add(a);
end;
Выскакивает ошибка "Menu inserted twice" - Меню вставлено дважды.
Как мне в цикле изменить обработчик события, чтобы каждая строка последовательно добавилась в меню?
ЗЫ: добавляется только первая строка и потом выскакивает ошибка
Volf_555 (2005-12-13 18:29:00) [3]Thank! Тогда всё ясно!
Volf_555 (2005-12-13 18:28:00) [4]ЗЫ: Если запустить программу и несколько раз понажимать на кнопку, то можно заметить что новый пункт добавляется и сразу удаляется!
Как такое может быть?
Никакого дополнительного обработчика события я не писал!
umbra (2005-12-13 18:26:00) [5]
> Что я не так написал?!
>
Вот это
a.Free;
Поскольку любой объект - это ссылка, то когда происходитMainMenu1.Items.Add(a);, то содержимое объектаане копируется. И в главное меню добавляется результатTMenuItem.Create(MainMenu1), а затем сразу же уничтожается. Уничтожать динамически созданные пункты меню надо только когда этот пункт уже не нужен
Volf_555 (2005-12-13 18:13:00) [6]Пишу следующий код, который должен добавить пункты в главное меню:
procedure TForm1.Button1Click(Sender: TObject);
var
a:TMenuItem;
begin
a:=TMenuItem.Create(MainMenu1);
a.Caption:='Проверка';
MainMenu1.Items.Add(a);
a.Free;
end;
Но код не работает... Что я не так написал?!
umbra (2005-12-12 19:17:00) [7]см. справку по функциям
NewItemиNewSubMenu
Volf_555 (2005-12-12 19:07:00) [8]динамически
umbra (2005-12-12 19:05:00) [9]динамически (во время работы программы) или во время написания программы?