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