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 Popup-Menü woher? (https://www.delphipraxis.net/761-popup-menue-woher.html)

theomega 3. Sep 2002 14:39


Popup-Menü woher?
 
Hallo
ich habe auf meinem Forumlar zwei Memos, beide habe das gleiche Popupmenü definiert. Wenn ich jetzt auf ein PopUpMenüItem klicke, soll in das Memo, von dem das Popupmeü aufgerufen wurde ein Text eingefügt werden.
Der "Sender" in dem OnClick verweist halt leider auf das MenüItem und nicht auf das Memo

Danke
TO

Daniel 3. Sep 2002 14:41

Du könntest Dir in einer Variable merken, welches Memo zuletzt aktiv war (siehe hierzu Event "onEnter"). Eigentlich reichts es dazu, sich das Tag des Memos in einer Integer-Variablen zu merken.

Grüße,
Daniel

MathiasSimmack 3. Sep 2002 16:48

Na ja, wenn du "(Sender as TMenuItem)" sowieso benutzt, dann könntest du ja auch die Funktion "GetParentMenu benutzen, die dir die zugehörige Komponente zurückliefern sollte. Und von da aus geht´s weiter aufwärts ...

Aber was ist eigentlich ein bleiches Menü? *hi hi* Eins mit zuvielen Items? :wink:

theomega 3. Sep 2002 16:57

ja, soweit war ich auch schon, nur wie kann ich vom TPopupmenu auf den auslöser schließen?

MathiasSimmack 3. Sep 2002 17:03

Sorry, mein Fehler. Vergiss den Sender! In der Hilfe gibt´s eine Erklärung zu "PopupComponent", und -voilá-
Code:
[b]procedure[/b] TForm1.OnMyClick(Sender: TObject);
[b]begin[/b]
  ShowMessage(PopupMenu1.PopupComponent.Name);
[b]end[/b];
Angenommen, dies wäre dein OnClick-Event. 8)

theomega 3. Sep 2002 17:08

genau das habe ich gesucht!

sakura 4. Sep 2002 08:53

Ich würde Dir folgenden Ansatz empfehlen (sicher ist sicher)
Code:
begin
  if [color=#ff0008]PopupMenu1.PopupComponent[/color] is TMemo then // PopUp Menü kam vom Memo
  begin
    if [color=#ff0008]PopupMenu1.PopupComponent[/color] = Memo1 then
    begin
      // kam von Memo 1
    end else if [color=#ff0008]PopupMenu1.PopupComponent[/color] = Memo2 then begin
      // kam von Memo 2
    end else begin
      // kam von einem anderen Memo
    end;
  end else begin
    // Aufruf kam nicht von einem Memo
  end;
end;
[edit]Sender --> PopupMenu1.PopupComponent [/edit]

theomega 4. Sep 2002 10:07

und genau das geht nicht, weil der Sender nicht das Memo Angibt sondern das PopUpMenuItem.

sakura 4. Sep 2002 10:11

:oops: Wieder mal voll daneben. Entsprechend geändert. :oops:

theomega 4. Sep 2002 10:16

Erscheint logischer


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