Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Action gleichzeitig bei PopupMenu und MainMenu (https://www.delphipraxis.net/21077-action-gleichzeitig-bei-popupmenu-und-mainmenu.html)

alcaeus 27. Apr 2004 18:07


Action gleichzeitig bei PopupMenu und MainMenu
 
Ich verwende in meiner Anwendung ein Menü, in dem es eine Option "Kundendaten ansehen" gibt. Dasselbe gibt es in einem Popupmenü, das an eine TListView gehängt ist. Beide MenuItems referenzieren die gleiche Action. Frage: Wie kann ich herausfinden, von welchem Menü (MainMenu oder PopupMenu) die Action gestartet wurde? Die Name-Eigenschaft des Sender-Parameters gibt mir nur den Namen der Action zurück

himitsu 27. Apr 2004 18:10

Re: Action gleichzeitig bei PopupMenu und MainMenu
 
Delphi-Quellcode:
Procedure OnClick...(Sender: TObjekt);
Begin
  If Sender = MainMenu1Item Then {vom Memü} Else {das andere}

  If Sender = PopupMenu1Item Then {ebenfalls das Andere}
End;

alcaeus 27. Apr 2004 18:11

Re: Action gleichzeitig bei PopupMenu und MainMenu
 
Ich zitiere mich mal selbst:
Zitat:

Zitat von alcaeus
Beide MenuItems referenzieren die gleiche Action.

Das sollte bedeuten dass beide MenuItems im Endeffekt die gleiche Routine aufrufen. Daher kommt ja auch das Problem, da ich wissen muss ob das ganze von der ListView oder vom MainMenu gestartet wurde, und ich will meinen Code nicht unnötig lang machen, indem ich noch OnClick-Routinen hinzufüge

himitsu 27. Apr 2004 18:16

Re: Action gleichzeitig bei PopupMenu und MainMenu
 
Ja, hatte es erst falsch verschtanden.

siehe oben, oder so:
Delphi-Quellcode:
Procedure TForm1.gfdgfd1Click(Sender: TObject);
  Begin
    If TMenuItem(Sender).Parent is TMainMenu Then ...
  End;
[EDIT]
Notfalls moßt do noch ein paar Ebenen höher gehen (wenn es sich z.B. um ein Untermenü in einem Untermenü handelt)
Delphi-Quellcode:
Procedure TForm1.gfdgfd1Click(Sender: TObject);
  Begin
    If TMenuItem(Sender).Parent.Parent... is TMainMenu Then ...
  End;

Oder du gibst einfach der Eigenschaft Tag der MenuItem's im Menü einen anderen Wert, als denen im PopupMenü
Delphi-Quellcode:
Procedure TForm1.gfdgfd1Click(Sender: TObject);
  Begin
    If Sender.Tag = 1 Then ...
  End;

alcaeus 27. Apr 2004 18:19

Re: Action gleichzeitig bei PopupMenu und MainMenu
 
Ok, danke, ich werde mir mal deinen Lösungsweg merken, aber wenn jemand eine andere Methode OHNE zusätzliche OnClick-Handler kennt, wäre ich sehr dankbar, ich verliere jetzt schon fast den Überblick...


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:46 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