RAD Studio VCL Reference
|
Adds one or more menu items to the end of the Items property array.
Use Add to add new menu items to the dropdown menu for this menu item. If this menu item is the value of the Items property of a main menu or pop-up menu, Add adds the items to the end of the menu.
Specify a single new menu item to add as the value of the Item parameter, or an array of new menu items as the value of the AItems parameter. AItems_Size is the index of the last item in the AItems array (one less than the number of items).
C++ Examples:
/* This example assumes that the main form of the application has a main menu with a menu item. The following code adds a separator, and the name of all forms to the menu. Do not access FormCount in the mainform's FormCreate. The other forms do not exist yet! */ void __fastcall TForm1::Button1Click(TObject *Sender) { TMenuItem *NewItem; // first create the separator NewItem = new TMenuItem(this); // If you change the AOwner (this) to MainMenu1->Items[1] and then you add the new menu you will get "Menu inserted twice"? Doesn't happen in Delphi. NewItem->Name = "Separator"; // The owner will cleanup these menu items. NewItem->Caption = "-"; // add the new item to the Windows menu MainMenu1->Items->Items[1]->Add(NewItem); // now create and add a menu item for each form for (int I = 0; I < Screen->FormCount; I++) { NewItem = new TMenuItem(this); // The owner will cleanup these menu items. NewItem->Caption = Screen->Forms[I]->Name + "Item"; NewItem->Name = Screen->Forms[I]->Name; MainMenu1->Items->Items[1]->Add(NewItem); } }
/* This example demonstrates how to add and delete menu items to a popup menu at runtime and assign an event handler to the OnClick event. Place a TPopupMenu and three buttons on the form named "AddButton", "EditButton", and "DestroyButton" and add OnClick events to all three buttons. Put the TPopupMenu in the PopupMenu property of the form. Place the PopupMenuItemsClick procedure in the TForm1 type declaration so that it can be used as the method call for the menu item OnClick event. */ void __fastcall TForm1::AddButtonClick(TObject *Sender) { // The owner (PopupMenu1) will cleanup this menu item. TMenuItem *NewItem = new TMenuItem(PopupMenu1); // create the new item int index = PopupMenu1->Items->Count; PopupMenu1->Items->Add(NewItem);// add it to the Popupmenu NewItem->Caption = "Menu Item " + IntToStr(index); NewItem->Tag = index; NewItem->OnClick = PopupMenuItemsClick;// assign it an event handler TNotifyEvent(); } void __fastcall TForm1::PopupMenuItemsClick(TObject *Sender) { TMenuItem *ClickedItem = dynamic_cast<TMenuItem *>(Sender); if (ClickedItem) { switch (ClickedItem->Tag) { case 0: { ShowMessage("first item clicked"); break; } case 1: { ShowMessage("second item clicked"); break; } case 2: { ShowMessage("third item clicked"); break; } case 3: { ShowMessage("fourth item clicked"); break; } } } } /* To edit or destroy an item, grab its pointer via the Items property. */ void __fastcall TForm1::EditButtonClick(TObject *Sender) { const int index = 1; TMenuItem *ItemToEdit = PopupMenu->Items->Items[index]; ItemToEdit->Caption = "Changed Caption"; } void __fastcall TForm1::DestroyButtonClick(TObject *Sender) { const int index = 2; TMenuItem *ItemToDelete = PopupMenu->Items->Items[index]; delete ItemToDelete; } void __fastcall TForm1::FormCreate(TObject *Sender) { const int num_items = 4; for (int index = 0; index < num_items; ++index) { // The owner (PopupMenu1) will cleanup this menu item. TMenuItem *NewItem = new TMenuItem(PopupMenu1); // create the new item PopupMenu1->Items->Add(NewItem);// add it to the Popupmenu NewItem->Caption = "Menu Item " + IntToStr(index); NewItem->Tag = index; NewItem->OnClick = PopupMenuItemsClick;// assign it an event handler TNotifyEvent(); } }
Delphi Examples:
{ This example assumes that the main form of the application has a main menu with a menu item. The following code adds a separator, and the name of all forms to the menu. Do not access FormCount in the mainform's FormCreate. The other forms do not exist yet! } procedure TForm1.Button1Click(Sender: TObject); var NewItem: TMenuItem; I : integer; begin { first create the separator } NewItem := TMenuItem.Create(MainMenu1.Items[1]); NewItem.Name:= 'Separator'; NewItem.Caption := '-'; { add the new item to the Windows menu } MainMenu1.Items[1].Add(NewItem); { now create and add a menu item for each form } for I := 0 to Screen.FormCount-1 do begin NewItem := TMenuItem.Create(MainMenu1.Items[1]); NewItem.Caption := Screen.Forms[I].Name + 'Item'; NewItem.Name := Screen.Forms[I].Name; MainMenu1.Items[1].Add(NewItem); end; end; procedure TForm1.FormDestroy(Sender: TObject); var I : Integer; begin // Count down, not up! for I := MainMenu1.Items[1].Count - 1 downto 0 do begin MainMenu1.Items[1].Items[I].Free; end; end;
{ This example demonstrates how to add and delete menu items to a popup menu at runtime and assign an event handler to the OnClick event. Place a TPopupMenu and three buttons on the form named "AddButton", "EditButton", and "DestroyButton" and add OnClick events to all three buttons. Put the TPopupMenu in the PopupMenu property of the form. Place the PopupMenuItemsClick procedure in the TForm1 type declaration so that it can be used as the method call for the menu item OnClick event. } type TForm1 = class(TForm) AddButton: TButton; EditButton: TButton; DestroyButton: TButton; PopupMenu1: TPopupMenu; procedure AddButtonClick(Sender: TObject); procedure EditButtonClick(Sender: TObject); procedure DestroyButtonClick(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public procedure PopupMenuItemsClick(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.AddButtonClick(Sender: TObject); var index: Integer; NewItem: TMenuItem; begin // The owner (PopupMenu1) will cleanup this menu item. NewItem := TMenuItem.Create(PopupMenu1); // create the new item index := PopupMenu1.Items.Count; PopupMenu1.Items.Add(NewItem);// add it to the Popupmenu NewItem.Caption := 'Menu Item ' + IntToStr(index); NewItem.Tag := index; NewItem.OnClick := PopupMenuItemsClick; // assign it an event handler end; procedure TForm1.PopupMenuItemsClick(Sender: TObject); begin with Sender as TMenuItem do begin case Tag of 0: ShowMessage('first item clicked'); 1: ShowMessage('second item clicked'); 2: ShowMessage('third item clicked'); 3: ShowMessage('fourth item clicked'); end; end; end; { To edit or destroy an item, grab its pointer via the Items property. } procedure TForm1.EditButtonClick(Sender: TObject); var ItemToEdit: TMenuItem; begin ItemToEdit := PopupMenu.Items[1]; ItemToEdit.Caption := 'Changed Caption'; end; procedure TForm1.DestroyButtonClick(Sender: TObject); var ItemToDelete: TMenuItem; begin ItemToDelete := PopupMenu.Items[2]; ItemToDelete.Free; end; procedure TForm1.FormCreate(Sender: TObject); var index: Integer; NewItem: TMenuItem; begin for index := 0 to 3 do begin // The owner (PopupMenu1) will cleanup this menu item. NewItem := TMenuItem.Create(PopupMenu1); // create the new item PopupMenu1.Items.Add(NewItem);// add it to the Popupmenu NewItem.Caption := 'Menu Item ' + IntToStr(index); NewItem.Tag := index; NewItem.OnClick := PopupMenuItemsClick; // assign it an event handler end; end;
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
|
What do you think about this topic? Send feedback!
|