![]() |
Kontextmenü in der Entwicklungsumgebung verändern
Hallo Leute,
ich bastele gerade an einer Komponente, die von TCustomControl abgeleitet ist, rum. Ich möchte nun, das wenn ich die Komponente auf eine Form gezogen habe und mit der rechten Maustaste drauf klicke, ein verändertes Kontextmenü aufpoppt, ähnlich wie beim TPageControl (z.B der Eintrag: "neue Seite"). Also die Preisfrage: Wie bekomme ich das Kontextmenü verändert bzw. wie bekomme ich neue Einträge ins Kontextmenü. Also wenn jemand 'ne gute Idee hat wäre ich echt dankbar. Grüsse, Sar |
Re: Kontextmenü in der Entwicklungsumgebung verändern
Du suchst nach einem Komponenteneditor. Such mal nach ToolsAPI und TComponentEditor bzw. RegisterComponentEditor.
|
Re: Kontextmenü in der Entwicklungsumgebung verändern
Hallo choose,
danke erstmal für den Tip, hab mal versucht was über den TComponentEditor rauszubekommen. Hab aber leider nichts verwertbares gefunden, hast Du vielleicht noch 'nen Tip wo ich ein paar Infos herbekommen kann? Danke im vorraus, Sar |
Re: Kontextmenü in der Entwicklungsumgebung verändern
Bei der Suche nach
![]() ![]() ![]() |
Re: Kontextmenü in der Entwicklungsumgebung verändern
werd ich mir gleich mal angucken.
Supi danke! |
Re: Kontextmenü in der Entwicklungsumgebung verändern
@choose - danke nochmal für die Links aber die muss ich mir
mal in Ruhe reinziehen, ist ja auch was mehr Text. Ich ha aber 'ne ander Lösung gefunden. Vielleicht hilft das ja auch jemanden, also poste ich das mal. Ist kurz, simpel und natürlich wiedermal 'ne Holzhammerlösung (wenn nix mehr geht hau feste drauf) : :twisted:
Delphi-Quellcode:
Ich werde mir noch ein eigenes Popup Menü schreiben wo ich von interface Part: TMyComponent = Class(TCustomControl) private protected procedure WndProc(var Message: TMessage); override; public published end; implementation Part: procedure TMyComponent.WndProc(var Message: TMessage); Var P : TPopupMenu; begin if (csDesigning in ComponentState) then Begin if Message.Msg = WM_RBUTTONUP then Begin // erstmal die eigentliche Message umbiegen, // löschen geht nicht, also was einsetzten // was nix auslöst, z.B.: WM_LBUTTONUP Message.Msg := WM_LBUTTONUP; // jetzt das eigene Kontextmenü kreiren P := TPopupMenu.Create(nil); P.Items.Add(TMenuItem.Create(nil)); P.Items[P.Items.Count -1].Caption := 'Test1'; P.Items.Add(TMenuItem.Create(nil)); P.Items[P.Items.Count -1].Caption := 'Test2'; // an der aktuellen MausPos aufrufen P.Popup(Self.ClientOrigin.X + Message.LParamLo, Self.ClientOrigin.Y + Message.LParamHi); end; inherited WndProc(Message); end else inherited WndProc(Message); end; P.Popup ein Ergebniss zurückbekomme das mir sagt welches MenuItem ausgewählt wurde, damit ich da vernünftig drauf reagieren kann. Hoffe das hilft jemanden. Wenn jemand eine bessere Lösung hat (und die gibt es mit Sicherheit) bitte posten !!! :) Grüsse, Sar |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 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