Форум: "Основная";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
ВнизДобавление пунктов меню в MainMenu и PopupMenu Найти похожие ветки
← →
Dmitry_04 (2005-02-10 18:42) [0]Мне нужно добавить пункты меню в MainMenu и PopupMenu... Я делаю вот как:
N1.Add(NewItem("...", 0, false, true, N1Click, 0, "N2"));
N1 - пункт меню, в который надо добавить новые...(там уже есть несколько) :) А событие у всех одно и тоже...
А вот как бы мне сделать так, чтобы определить новым пунктам еще GroupIndex, AutoCheck и RadioItem?
← →
Fay © (2005-02-10 19:25) [1]var
MenuItem : TMenuItem;
begin
MenuItem := TMenuItem.Create(Self);
MenuItem.Caption := "qwe";
MenuItem.GroupIndex := 2;
Next1.Add(MenuItem);
← →
Fay © (2005-02-10 19:25) [2]В смысле
var
MenuItem : TMenuItem;
begin
MenuItem := TMenuItem.Create(Self);
MenuItem.Caption := "qwe";
MenuItem.GroupIndex := 2;
N1.Add(MenuItem);
← →
Dmitry_04 (2005-02-10 23:53) [3]а мне надо неопределенное колличество пунктов меню добавить... сделал этот пример в цикле выдает ошибку... попробовал сделать чуть похитрее:
repeat
begin
with TMenuItem.Create(Self) do
begin
Caption:="qwe";
GroupIndex:=2;
end;
N1.Add(???);
end;
until
...
Но теперь возник вопрос, как это добавлять теперь?
N1.Add(???); что здесь писать непонятно...
← →
Dmitry_04 (2005-02-11 14:29) [4]Неужели нет такого способа? :(
← →
Александр Иванов © (2005-02-11 14:36) [5]
var Item:TMenuItem;
...
repeat
Item:=TMenuItem.Create(Self);
with Item do
begin
Caption:="qwe";
GroupIndex:=2;
end;
N1.Add(Item);
until
← →
Dmitry_04 (2005-02-11 15:40) [6]а ошибки не будет возникать? Я просто сейчас на работе и проверить не могу...
← →
Александр Иванов © (2005-02-11 15:44) [7]Dmitry_04 (11.02.05 15:40) [6]
Твоя программа, тебе лучше знать :).
← →
Dmitry_04 (2005-02-12 19:22) [8]Работает :) А как мне добавить в помимо MainMenu в PopupMenu пункт? Делаю я так:
var Item:TMenuItem;
...
repeat
Item:=TMenuItem.Create(Self);
with Item do
begin
Caption:="qwe";
GroupIndex:=2;
end;
N1.Add(Item);
PopupMenu1.Items.Add(Item);
until
Возникает ошибка...
← →
grom (2005-02-12 19:51) [9]Item:=TMenuItem.Create(Self);
with Item do
begin
Caption:="qwe";
GroupIndex:=2;
end;
N1.Add(Item);
Item:=TMenuItem.Create(Self);
with Item do
begin
Caption:="qwe";
GroupIndex:=2;
end;
PopupMenu1.Items.Add(Item);
← →
Dmitry_04 (2005-02-12 20:31) [10]Я тоже так думал сделать... Но это правильно?
← →
begin...end © (2005-02-12 21:28) [11]> Dmitry_04 (12.02.05 20:31) [10]
Если нужно добавить в PopupMenu пункт первого уровня, т.е. такой, который будет виден сразу после вызова PopupMenu - используйте пример [9] (вторая часть). А если нужно добавить подпункт для какого-нибудь пункта PopupMenu - используйте пример [9] (первая часть), где N1 - пункт, для которого нужно добавить подпункт. Ошибка, о которой Вы говорили в [8], может возникать потому, что пункта с именем N1 просто нет.
← →
Dmitry_04 (2005-02-13 12:24) [12]Получилось... Но теперь еще одна проблема... Как мне сделать, чтобы при нажатии в MainMenu на один из этих пунктов в PopupMenu он тоже становился Checked ?
← →
Dmitry_04 (2005-02-13 15:09) [13]Что делать то?
← →
grom (2005-02-13 15:19) [14]procedure TForm1.N3331Click(Sender: TObject);// MainMenu
begin
N881.Checked{PopupMenu }:= N3331.Checked// MainMenu
end;
← →
Dmitry_04 (2005-02-13 15:51) [15]а ведь при создании MenuItem-а мы не знаем его названия... т.е. мы не знаем N881 там или еще что...
← →
Dmitry_04 (2005-02-13 16:23) [16]Этого никак нельзя сделать???
← →
Dmitry_04 (2005-02-13 20:46) [17]Как мне хотябы имя MenuItem-а определить?
← →
Stilgar © (2005-02-14 20:09) [18]Имени нету. Его можно присвоить при создании, и потом через него работать, но это будет во всех отношениях хуже.
Надо сохранять адрес.
При создании:
Item:=TMenuItem.Create(Self);
with Item do
begin
Caption:="qwe";
GroupIndex:=2;
end;
N3331.Tag := Integer(Item); //присваиваем адрес нового пункта меню
N1.Add(Item);
Тут уже упоминавшийся N3331 - это пункт главного меню, который соответствует создаваемому пункту всплывающего меню.
Потом можно присваивать состояние (checked/unchecked) так:
procedure TForm1.N3331Click(Sender: TObject);// MainMenu
begin
TMenuItem(N3331.Tag).Checked{PopupMenu }:= N3331.Checked// MainMenu
end;
Может тут не все идеально, но главное понимание идеи.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.052 c