Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
1-1133514279
DimMih
2005-12-02 12:04
2006.01.01
Помещение компонентов в DBGrid


1-1133546462
Gear
2005-12-02 21:01
2006.01.01
как сделать перенос по словам в элементе ListBox?


2-1134473133
vitaliy14
2005-12-13 14:25
2006.01.01
Сжатие картинки


11-1116100264
Thaddy
2005-05-14 23:51
2006.01.01
TlistEx?


2-1134487967
root
2005-12-13 18:32
2006.01.01
Как исполнить bat(cmd) файл





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский