![]() |
Zugriff von Klasse auf Ereignis fremder Komponente
Hallo,
ich habe mir meine eigene ShellTreeView-Klasse abgeleitet, welche später als Komponente bereitstehen soll. Dieser Komponente soll man jetzt zur Designzeit über den PopUp-Manager ein PopUpMenü zuordnen können. Ich habe dem TreeView published properties wie zum Beispiel CopyMenuItem oder CutMenuItem gegegeben. Der User kann diese später mit den MenuItems des gewünschten PopupMenüs belegen. Über DoContextPopup fange ich die Mausposition ab und entscheide welche Menüeinträge enabled sind und welche nicht. Gibt es eine Möglichkeit an das OnCLick-Ereignis der MenüItems zu kommen, so dass der User diese später nicht manuell mit TreeView-Funktionen belegen muss? Das MenüItem ist als privates Feld gespeichert.. Oder hat jemand einen besseren Vorschlag mein Ziel zu erreichen? Grüße Sebastian |
Re: ShellTreeView um dynamisches PopUpMenu erweitern
Wie wär's mit FPopupMenu.Items[i].OnClick ?
Vielleicht hab ich auch was falsch verstanden, aber wenn du deiner Komponente eine SubKomponente (in diesem Fall ein TMenuItem) zuordnest, dann werden die Events (in diesem Fall das OnClick-Event) dieser SubKomponente auch im OI angezeigt. |
Re: ShellTreeView um dynamisches PopUpMenu erweitern
ich habe die MenuItems doch sogar direkt als Eigenschaft gespeichert. Schließlich muss ich auch wissen, welches Item was bewirken soll. Wenn ich Items[I].OnClick hat die Komponente doch keine Ahnung, ob es nun z.B. Copy oder Paste ist. Die Frage ist eher technisch. Wie deklariere ich denn das OnClick-Ereignis der Sub-Komponente in meiner Klasse? Ich muss doch irgendeine Methode haben, in der ich das Ereignis bearbeite..
|
Re: ShellTreeView um dynamisches PopUpMenu erweitern
Zitat:
|
Re: ShellTreeView um dynamisches PopUpMenu erweitern
Zitat:
|
Re: ShellTreeView um dynamisches PopUpMenu erweitern
Zitat:
kann man in delphi externe ereignisse im code einer klasse behandeln? |
Re: Zugriff von Klasse auf Ereignis fremder Komponente
Hallo Stevie,
ich glaube sowohl meine letzte als auch deine Antwort wurden gelöscht. Kannst du bitte nochmal posten? Ich hatte sich leider nicht lesen können, da ich unterwegs war.. Grüße Sebastian |
Re: Zugriff von Klasse auf Ereignis fremder Komponente
Die musst SetMethoden für deine MenuItems erstellen:
Delphi-Quellcode:
interface
{...} type TMyTreeView = class(TTreeView) private FCopyMenuItem: TMenuItem; FOldCopyOnClick: TNotifyEvent; procedure SetCopyMenuItem(const Value: TMenuItem); procedure MyMenuItemOnClick(Sender: TObject); published property CopyMenuItem: TMenuItem read FCopyMenuItem write SetCopyMenuItem; end; implementation procedure TMyTreeView.MyMenuItemOnClick(Sender: TObject); begin {...} end; procedure TMyTreeView.SetCopyMenuItem(const Value: TMenuItem); begin if FCopyMenuItem <> Value then begin if Assigned(FCopyMenuItem) then // alten Eventhandler wieder zuweisen FCopyMenuItem.OnClick := FOldCopyOnClick; // MenuItem zuweisen FCopyMenuItem := Value; if Assigned(FCopyMenuItem) then begin // alten Eventhandler "retten" FOldCopyOnClick := FCopyMenuItem.OnClick; // eigenen Eventhandler zuweisen FCopyMenuItem.OnClick := MyMenuItemOnClick; end; if Value <> nil then Value.FreeNotification(Self); end; end; {...} |
Re: Zugriff von Klasse auf Ereignis fremder Komponente
:hello: Super-Stevie. Danke!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:51 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