Додавання пунктів меню до MainMenu та PopupMenu

Мені потрібно додати пункти меню в MainMenu та PopupMenu. Я роблю ось як: N1.Add(NewItem(". ", 0, false, true, N1Click, 0, "N2")); N1 - пункт меню, до якого треба додати нові. (Там уже є кілька) :) А подія у всіх одна і теж.

А ось як би мені зробити так, щоб визначити нові пункти ще GroupIndex, AutoCheck і RadioItem?

var MenuItem : TMenuItem; begin MenuItem := TMenuItem.Create(Self); MenuItem.Caption := "qwe"; MenuItem.GroupIndex := 2; Next1.Add(MenuItem);

var MenuItem : TMenuItem; begin MenuItem := TMenuItem.Create(Self); MenuItem.Caption := "qwe"; MenuItem.GroupIndex := 2;N1.Add(MenuItem);

а мені треба невизначену кількість пунктів меню додати. зробив цей приклад у циклі видає помилку. спробував зробити трохи хитрішим: repeat begin з TMenuItem.Create(Self) do begin Caption:="qwe"; GroupIndex:=2; end; N1.Add(. ); end; until . Але тепер виникло питання, як це додавати тепер? N1.Add(. ); що тут писати незрозуміло.

Невже такого способу немає? :(

var Item:TMenuItem; . repeat Item:=TMenuItem.Create(Self); з Item do begin Caption:="qwe"; GroupIndex:=2; end; N1.Add(Item); until

а помилки не виникатиме? Я просто зараз на роботі та перевірити не можу.

Dmitry_04 (11.02.05 15:40) [6]Твоя програма, тобі краще знати :).

Працює :) А як мені додати крім MainMenu в PopupMenu пункт? Роблю я так: var Item:TMenuItem; . repeat Item:=TMenuItem.Create(Self); з Item do begin Caption:="qwe"; GroupIndex:=2; end; N1.Add(Item); PopupMenu1.Items.Add(Item); until Виникає помилка.

Item:=TMenuItem.Create(Self); з Item do begin Caption:="qwe"; GroupIndex:=2; end; N1.Add(Item);

Item:=TMenuItem.Create(Self); з Item do begin Caption:="qwe"; GroupIndex:=2; end; PopupMenu1.Items.Add(Item);

Я теж так думав зробити. Але чи це правильно?

> Dmitry_04 (12.02.05 20:31) [10]

Якщо потрібно додати PopupMenu пункт першого рівня, тобто. такий, який буде видно відразу після виклику PopupMenu – використовуйте приклад [9] (друга частина). А якщо потрібно додатипідпункт для якогось пункту PopupMenu – використовуйте приклад [9] (перша частина), де N1 – пункт, для якого потрібно додати підпункт. Помилка, про яку Ви говорили в [8], може бути тому, що пункту з ім'ям N1 просто немає.

Вийшло. Але наразі ще одна проблема. Як мені зробити, щоб при натисканні MainMenu на один з цих пунктів в PopupMenu він теж ставав Checked ?

procedure TForm1.N3331Click(Sender: TObject);// MainMenu begin N881.Checked:= N3331.Checked// MainMenu end;

адже при створенні MenuItem-а ми не знаємо його назви. тобто. ми не знаємо N881 там або ще що.

Цього не можна зробити.

Як мені хоча б ім'я MenuItem-а визначити?

Тут уже згадуваний N3331 - це пункт головного меню, який відповідає пункту спливаючого меню.

Потім можна надавати стан (checked/unchecked) так: procedure TForm1.N3331Click(Sender: TObject);// MainMenu begin TMenuItem(N3331.Tag). end;

Може тут все ідеально, але головне розуміння ідеї.