Форум: "Начинающим";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];
ВнизПроблема работы с TMainMenu Найти похожие ветки
← →
Volf_555 (2005-12-12 18:56) [0]Есть MainMenu1. В нём есть несколько пунктов. Один из них называется "Тип".
Как мне работать с подпунктами "Тип" - то есть как удалять и добавлять новые значения?
← →
umbra © (2005-12-12 19:05) [1]динамически (во время работы программы) или во время написания программы?
← →
Volf_555 (2005-12-12 19:07) [2]динамически
← →
umbra © (2005-12-12 19:17) [3]см. справку по функциям
NewItem
иNewSubMenu
← →
Volf_555 (2005-12-13 18:13) [4]Пишу следующий код, который должен добавить пункты в главное меню:
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-13 18:26) [5]
> Что я не так написал?!
>
Вот этоa.Free;
Поскольку любой объект - это ссылка, то когда происходитMainMenu1.Items.Add(a);
, то содержимое объектаа
не копируется. И в главное меню добавляется результатTMenuItem.Create(MainMenu1)
, а затем сразу же уничтожается. Уничтожать динамически созданные пункты меню надо только когда этот пункт уже не нужен
← →
Volf_555 (2005-12-13 18:28) [6]ЗЫ: Если запустить программу и несколько раз понажимать на кнопку, то можно заметить что новый пункт добавляется и сразу удаляется!
Как такое может быть?
Никакого дополнительного обработчика события я не писал!
← →
Volf_555 (2005-12-13 18:29) [7]Thank! Тогда всё ясно!
← →
Volf_555 (2005-12-13 18:44) [8]Пишу следующее (где 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" - Меню вставлено дважды.
Как мне в цикле изменить обработчик события, чтобы каждая строка последовательно добавилась в меню?
ЗЫ: добавляется только первая строка и потом выскакивает ошибка
← →
Плохиш © (2005-12-13 18:59) [9]
> Volf_555 (13.12.05 18:44) [8]
Вот это
>a:=TMenuItem.Create(MainMenu1);
Надо перенести в тело цикла вместоa.Clear
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.014 c