AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Zugriff von Klasse auf Ereignis fremder Komponente
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff von Klasse auf Ereignis fremder Komponente

Ein Thema von sieppl · begonnen am 17. Sep 2004 · letzter Beitrag vom 21. Sep 2004
Antwort Antwort
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#1

Zugriff von Klasse auf Ereignis fremder Komponente

  Alt 17. Sep 2004, 15:45
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
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

Re: ShellTreeView um dynamisches PopUpMenu erweitern

  Alt 17. Sep 2004, 15:55
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.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#3

Re: ShellTreeView um dynamisches PopUpMenu erweitern

  Alt 17. Sep 2004, 16:10
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..
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

Re: ShellTreeView um dynamisches PopUpMenu erweitern

  Alt 17. Sep 2004, 16:18
Zitat von sieppl:
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.
Da hast du doch deine MenuItems (und somit auch die Events dieser Teile...)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#5

Re: ShellTreeView um dynamisches PopUpMenu erweitern

  Alt 17. Sep 2004, 16:47
Zitat von Stevie:
Zitat von sieppl:
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.
Da hast du doch deine MenuItems (und somit auch die Events dieser Teile...)
ja das ist klar, aber ich muss doch im interface-teil meiner klasse eine methode angeben. ich glaube kaum, dass ich dort FCopyMenuItem.OnChange angeben kann. wie soll ich das implementieren?
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#6

Re: ShellTreeView um dynamisches PopUpMenu erweitern

  Alt 18. Sep 2004, 12:38
Zitat von Stevie:
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.
okay, im OI ist klar, dass es da geht.
kann man in delphi externe ereignisse im code einer klasse behandeln?
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#7

Re: Zugriff von Klasse auf Ereignis fremder Komponente

  Alt 21. Sep 2004, 13:15
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
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

Re: Zugriff von Klasse auf Ereignis fremder Komponente

  Alt 21. Sep 2004, 13:37
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;

{...}
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#9

Re: Zugriff von Klasse auf Ereignis fremder Komponente

  Alt 21. Sep 2004, 15:48
Super-Stevie. Danke!
Sebastian
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz