![]() |
Item aus Mainmenü als sender?
moin, ich habe ein problem mit meinem mainmenü und zwar möchte ich einen eintrag wie einen button benutzen:
Delphi-Quellcode:
in diesem fall ist Speichern ein button. was ich möchte ist:
if sender=Speichern then
Delphi-Quellcode:
wie kann ich also einen mainmenueintrag als sender benutzen? danke im voraus.
if sender=Speichern or sender=mainmenu.speichernmenu then
|
Re: Item aus Mainmenü als sender?
Moin Herrentor,
so wie ich das sehe, solltest Du Dich mal mit TActionList beschäftigen. |
Re: Item aus Mainmenü als sender?
ist das nicht mit mainmenü möglich?
|
Re: Item aus Mainmenü als sender?
Mach das doch besser als Cast mit Typunterscheidung. Bsp:
Delphi-Quellcode:
Ist eleganter als den Sender gegen jede existiernde Instanz zu prüfen. Und wenn du dann doch noch unter einzelnen Buttuns oder MenuItems unterscheiden musst, so würde ich da die Eigenschaft "Tag" nutzen - oder wenn alle (ganz sicher) eine einzigartige Beschriftung haben, dann geht's auch über die Caption. Das ist aber langsamer und nicht so schön, da wenn du diese dann änderst das Contorl nicht mehr identifiziert werden kann.
if Sender is TButton then
begin with TButton(Sender) do . . end else if Sender is TMainMenuItem then with TMainMenuItem(Sender) do . . end; Gruss, Fabian |
Re: Item aus Mainmenü als sender?
Moin Herrentor,
doch, sollte gehen:
Delphi-Quellcode:
if (Sender is TMenuItem) then begin
if (Sender as TMenuItem) = Speichern1 then ShowMessage('SPEICHERN'); end; |
Re: Item aus Mainmenü als sender?
Zitat:
Und hast ja Recht: Es macht auch hier noch Sinn den Vergleich mit der Instanz zu machen. Meine Variante mit dem Tag ist nur Mehraufwand. Was aber auch gehen müsste:
Delphi-Quellcode:
Ob der Vergleich ganz ohne Cast auch geht weiss ich nicht, da es ja alles eh nur Integer sind. Es kann (und wird vermutlich) so sein dass der Compiler dann aber meckert. Also besser mit den Casts auf Nummer sicher gehen :)
if Integer(Pointer(Sender)) = Integer(Pointer(Speichern1)) then ....
Ob das nun schön/lesbar ist, das ist eine andere Frage :mrgreen: |
Re: Item aus Mainmenü als sender?
ok, besten dank. funktioniert.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:24 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