Kod: Tümünü seç
procedure TForm1.MenuClick(Sender: TObject);
begin
if Sender is TMenuItem then
Showmessage(inttostr(TMenuItem(Sender).Tag));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
menu : TMainMenu;
Itemmenu,
ItemSubmenu,
ItemSubSubmenu : TMenuItem;
dongumenu,
dongualtmenu,
dongualtaltmenu :integer;
begin
Menu := TMainMenu.Create(Application.MainForm);
for dongumenu:= 1 to 10 do
begin
Itemmenu := TMenuItem.Create(menu);
Itemmenu.Caption := 'Menum '+inttostr(dongumenu);
menu.Items.Add(Itemmenu);
for dongualtmenu:= 1 to 9 do
begin
ItemSubmenu := TMenuItem.Create(menu);
ItemSubmenu.Caption := 'Menum '+inttostr(dongumenu)+ '_'+inttostr(dongualtmenu);
ItemSubmenu.Name := 'Menum_'+inttostr(dongumenu)+ '_'+inttostr(dongualtmenu);
Itemmenu.Add(ItemSubmenu);
InsertComponent(ItemSubMenu); // Bu satiri eklemeyince findComponent calismiyor
// ama bu satiri ekleyince formu kapatmak istedigimde hata aliyorum...
for dongualtaltmenu:= 1 to 9 do
begin
ItemSubSubmenu := TMenuItem.Create(menu);
ItemSubSubmenu.Tag := (dongumenu*100)+(dongualtmenu*10)+dongualtaltmenu;
ItemSubSubmenu.Caption := 'Menum '+inttostr(ItemSubSubmenu.Tag);
ItemSubSubmenu.OnClick := MenuClick;
TMenuItem(FindComponent(ItemSubmenu.name)).Add(ItemSubSubmenu);
//ItemSubmenu.Add(ItemSubSubmenu); orjinali bu satirin yerine ustteki satiri ekledim...
end;
end;
end;
end;
Seklinde daha once forumda olan bir kod buldum, bu kod uzerinde biraz degisiklik yapmam lazim soyleki
Kod: Tümünü seç
TMenuItem(FindComponent(ItemSubmenu.name)).Add(ItemSubSubmenu);
//ItemSubmenu.Add(ItemSubSubmenu); orjinali bu satirin yerine ustteki satiri ekledim...
Ayrica
Kod: Tümünü seç
InsertComponent(ItemSubMenu); // Bu satiri eklemeyince findComponent calismiyor
// ama bu satiri ekleyince formu kapatmak istedigimde hata aliyorum...
Bunu bu sekilde calistirmak istememin sebebi programdaki menu bir data tablosunda tutuluyor ve tablodaki degerler ile hangi menu hangisinin altinda v.s. gibi bilgiler tutuluyor,
Saygilar
Burhan Cakmak