![]() |
Datei über Kontextmenü einfügen
Hallo,
ich habe einen Email-Client auf dem ein TMemo Control liegt. TMemo hat ja per Default das Standard-Kontextmenü von Windows beim welchem "Einfügen" ja nur dann aktiviert ist wenn sich Text in der Zwischenablage befindet. Ich möchte aber, dass ich über den Menüpunkt "Einfügen" auch andere Formate unterstüzen kann um diese als Anhänge zu versenden. Im Key-Down Event des Memos habe ich das auch schon für STRG+V implementiert. Nun meine Frage kann ich dem Standard-Kontextmenü oder TMemo irgendwo mitteilen / einstellen das ich auch andere Clipboard-Formate als Text unterstütze und dafür dann einen eigenen Event-Handler definieren oder muss ich das Kontextmenü selber nachbauen, sprich Copy/Cut/Paste/Delete eigens implementieren? Bei meiner Suche habe ich ![]() |
AW: Datei über Kontextmenü einfügen
So schwer ist das "Selbstbauen" nun auch nicht.
Ein Popupmenü und darin einfach die vorhandenen Befehle nutzen.
Delphi-Quellcode:
Ich glaub in den Demos gibt/gabe es einen TextEditor, wo du dir das Menü auf Basis eines TPopupMenu+TActionList kopieren könntest.
Memo1.Undo; // Rückgängig
Memo1.CutToClipboard; // Ausschneiden Memo1.CopyToClipboard; // Kopieren Memo1.PasteFromClipboard; // Einfügen (und hier zusätzlich deine andere Behandlung mit dazu) Memo1.SelText := ''; // Löschen Memo1.SelectAll; // Alles auswählen C:\Users\Public\Documents\Embarcadero\Studio\19.0\ Samples\... Oben, für das Fenstermenü im TitelleistenIcon, gibt es irgendwo Codes, wo man dieses Menü bearbeiten/erweitern oder in ein TPopupMenu kopieren kann. Eventuell lässt sich der Code auch für ein normales Popupmenü benutzen. |
AW: Datei über Kontextmenü einfügen
Ist das ein gewünschtes Beispiel?
Delphi-Quellcode:
Source stammt von
{
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; ![]() Es gibt bestimmt auch einen Delphi Sydney erklärung, aber das war mein erster Treffer der es recht gut erklärt. Relativ simpel und effektiv, finde ich. |
AW: Datei über Kontextmenü einfügen
Danke für die schnellen Antworten.
Wie man ein Kontextmenü baut weiß ich, mir ging es eigentlich hauptsächlich darum ob es evtl. Events/Hooks gibts mit denen ich mich an das bestehende dran hängen kann. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz