Додавання пунктів меню до 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;
Може тут все ідеально, але головне розуміння ідеї.