RAD Studio VCL Reference
|
Identifies the pop-up menu associated with the control.
property PopupMenu: TPopupMenu;
__property TPopupMenu PopupMenu;
Assign a value to PopupMenu to make a pop-up menu appear when the user selects the control and clicks the right mouse button. If the TPopupMenu's AutoPopup property is true, the pop-up menu appears automatically. If the menu's AutoPopup property is false, display the menu with a call to its Popup method from the control's OnContextPopup event handler.
C++ Examples:
/* This example uses two edit boxes and one pop-up menu on a form. The pop-up menu contains Cut, Copy, and Paste commands. This code makes the pop-up menu available to both edit boxes: */ void __fastcall TForm1::FormCreate(TObject *Sender) { PopupMenu1->AutoPopup = true; Edit1->PopupMenu = PopupMenu1; Edit2->PopupMenu = PopupMenu1; } /* These are the cut, copy, and paste OnClick events for the commands on the pop-up menu. Double click on the pop-up menu and add three TMenuItems. Then set the captions to "Cut", "Copy" and "Paste". The names will be automatically set to "Cut1", "Copy1", and "Paste1". Then double click on the OnClick events and they will be named "Cut1Click", "Copy1Click" and "Paste1Click" respectively. Note: only the selected portion of the string in the edit box will be copied, cut or replaced. */ void __fastcall TForm1::Copy1Click(TObject *Sender) { TComponent *pComponent = PopupMenu1->PopupComponent; if (pComponent) { if (pComponent->ClassNameIs("TEdit")) (dynamic_cast<TEdit *>(pComponent))->CopyToClipboard(); else MessageBeep(0); } else MessageBeep(0); } void __fastcall TForm1::Cut1Click(TObject *Sender) { TComponent *pComponent = PopupMenu1->PopupComponent; if (pComponent) { if (pComponent->ClassNameIs("TEdit")) (dynamic_cast<TEdit *>(pComponent))->CutToClipboard(); else MessageBeep(0); } else MessageBeep(0); } void __fastcall TForm1::Paste1Click(TObject *Sender) { TComponent *pComponent = PopupMenu1->PopupComponent; if (pComponent) { if (pComponent->ClassNameIs("TEdit")) (dynamic_cast<TEdit *>(pComponent))->PasteFromClipboard(); else MessageBeep(0); } else MessageBeep(0); }
/* 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 uses two edit boxes and one pop-up menu on a form. The pop-up menu contains Cut, Copy, and Paste commands. This code makes the pop-up menu available to both edit boxes: } procedure TForm1.FormCreate(Sender: TObject); begin PopupMenu1.AutoPopup := True; Edit1.PopupMenu := PopupMenu1; Edit2.PopupMenu := PopupMenu1; end; { These are the cut, copy, and paste OnClick events for the commands on the pop-up menu. Double click on the pop-up menu and add three TMenuItems. Then set the captions to "Cut", "Copy" and "Paste". The names will be automatically set to "Cut1", "Copy1", and "Paste1". Then double click on the OnClick events and they will be named "Cut1Click", "Copy1Click" and "Paste1Click" respectively. Note: only the selected portion of the string in the edit box will be copied, cut or replaced. } procedure TForm1.Copy1Click(Sender: TObject); begin if PopupMenu1.PopupComponent = Edit1 then Edit1.CopyToClipboard else if PopupMenu1.PopupComponent = Edit2 then Edit2.CopyToClipboard else Beep; end; procedure TForm1.Cut1Click(Sender: TObject); begin if PopupMenu1.PopupComponent = Edit1 then Edit1.CutToClipboard else if PopupMenu1.PopupComponent = Edit2 then Edit2.CutToClipboard else Beep; end; procedure TForm1.Paste1Click(Sender: TObject); begin if PopupMenu1.PopupComponent = Edit1 then Edit1.PasteFromClipboard else if PopupMenu1.PopupComponent = Edit2 then Edit2.PasteFromClipboard else Beep; 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!
|