![]() |
Welches Objekt hat PopUp geöffnet?
Hi, ich habe mehreren Einträgen eines PopUps ein gemeinsames Ereignis zu gewiesen, die passende Aktion frage ich jetzt über den Sender ab.
Das PopUp verlinke ich jetzt mit zwei verschiedenen Memos. Wie finde ich jetzt raus, über welches Memo das PopUp geöffnet wurde? Denn der Sender gibt nur an, welchen Eintrag ich geöffnet habe, oder? |
Re: Welches Objekt hat PopUp geöffnet?
Du kann den Sender im onPopup Ereignis abfragen.
MfG Pr0g |
Re: Welches Objekt hat PopUp geöffnet?
Stimmt!
Hab ich gerade garnicht dran gedacht! Dann speicher ich den in einer Variablen und les ihn wieder aus. Genial :D, danke! |
Re: Welches Objekt hat PopUp geöffnet?
Hat auch noch mit dem Thema zu tun:
Ich speicher den Sender so:
Delphi-Quellcode:
var SenderPopUp:string [...]
SenderPopUp:=Sender.Classname; Jetzt will ich den Namen anwenden:
Delphi-Quellcode:
if execute then TMemo(FindComponent(SenderPopUp)).lines.loadfromfile(filename);
Jetzt bekomme ich eine AccesViolation. Warum? Das muss am Sender liegen, wenn ich statt "TMemo(FindComponent(SenderPopUp))" direkt Memo1 oder Memo2 nehme klappt das Einwand frei. |
Re: Welches Objekt hat PopUp geöffnet?
Das wird daran liegen, das FindComponet nichts findet, in dem String also nichts, oder was falsches steht. Lass dir den String mal mit ShowMessage zu Kontrolle ausgeben.
|
Re: Welches Objekt hat PopUp geöffnet?
Hast recht, kann nicht klappen: SenderPopUp=TPopUpMenu.
Aber warum? Ich weise ihn so zu:
Delphi-Quellcode:
Man mit sowas muss ich mich mehr beschäftigen!
procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin SenderPopUp:=Sender.Classname; end; |
Re: Welches Objekt hat PopUp geöffnet?
Entweder den Namen mit
Delphi-Quellcode:
oder gleich so
SenderPopUp:=TPopupMenu(Sender).PopupComponent.Name;
Delphi-Quellcode:
var SenderPopUp:TObject [...]
SenderPopUp:=TPopupMenu(Sender).PopupComponent; if execute then TMemo(SenderPopUp).lines.loadfromfile(filename); |
Re: Welches Objekt hat PopUp geöffnet?
Zitat:
Wenn also der Sender Memo1 oder Memo2 wäre, würde Sender.Classname in beiden Fällen "TMemo" sein. MfG Binärbaum |
Re: Welches Objekt hat PopUp geöffnet?
Zitat:
|
Re: Welches Objekt hat PopUp geöffnet?
Danke, klappt!
Danke für die Erklärung Binärbaum, sonst hätte ich jetzt gefragt, warum das nicht klappt. :) Zitat:
Delphi-Quellcode:
dann das Memo?
SenderPopUp:=TPopupMenu(Sender).PopupComponent;
Wegen dem "PopupComponent"? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 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