![]() |
Popup, wie erkenne ich wo aktiviert wurde
Hallo,
ich habe 3 Memofelder. Über 1 Popup möchte ich Aktionen ausführen, in dem Memofeld, in dem ich mit Rechtsklick dieses Popup geöffnet habe. Wie kann ich ermitteln, in welchem Memofeld ich das Popup aktiviert habe ? |
Re: Popup, wie erkenne ich wo aktiviert wurde
Delphi-Quellcode:
TPopupMenu.PopupComponent
|
Re: Popup, wie erkenne ich wo aktiviert wurde
Delphi-Quellcode:
Edit: War die Frage eben nicht noch anders?
ScreenToClient(PopupMenu.PopupPoint)
|
Re: Popup, wie erkenne ich wo aktiviert wurde
Er wollte ja die Komponente wissen, nicht die Koordinate ;)
|
Re: Popup, wie erkenne ich wo aktiviert wurde
Zitat:
|
Re: Popup, wie erkenne ich wo aktiviert wurde
Hallo,
erst mal danke, bin aber noch nicht weiter gekommen. z.B. hinzufügen einer neuen Zeile im Memo.
Delphi-Quellcode:
Da steig mein Programm mit einer Excepption aus.
procedure TForm.FileMenuItemClick(Sender: TObject);
var i:integer; begin if not opendialog.Execute then exit; for i := 0 to opendialog.Files.count-1 do (ActiveControl as TMemo).Lines.Add(opendialog.Files[i]); end; |
Re: Popup, wie erkenne ich wo aktiviert wurde
Ist das ActiveControl auch dein TMemo ?
|
Re: Popup, wie erkenne ich wo aktiviert wurde
Hallo,
ja, ich habs gelöst.
Delphi-Quellcode:
PopupMenu.PopupComponent war der richtige Hinweis
procedure TForm.FileMenuItemClick(Sender: TObject);
var i:integer; begin if not opendialog.Execute then exit; for i := 0 to opendialog.Files.count-1 do (PopupMenu.PopupComponent as TMemo).Lines.Add(opendialog.Files[i]); end; |
Re: Popup, wie erkenne ich wo aktiviert wurde
Man kann das auch noch schöner und schneller machen; man braucht dazu nur eine Zwischenvariable.
Delphi-Quellcode:
Damit ist die Anweisung (PopupMenu.PopupComponent as TMemo).Lines ausserhalb der Schleife und das ist ein Vorteil, weil sich dahinter gleich 3 Funktionsaufrufe verstecken.
procedure TForm.FileMenuItemClick(Sender: TObject);
var i:integer; lines : TStrings; begin if not opendialog.Execute then exit; lines := (PopupMenu.PopupComponent as TMemo).Lines; for i := 0 to opendialog.Files.count-1 do lines.Add(opendialog.Files[i]); end; Aber es geht noch besser:
Delphi-Quellcode:
Man könnte jetzt die Zwischenvariable "lines" wieder eliminieren, aber das macht den Code nicht besser lesbar.
procedure TForm.FileMenuItemClick(Sender: TObject);
var lines : TStrings; begin if opendialog.Execute then begin lines := (PopupMenu.PopupComponent as TMemo).Lines; lines.AddStrings(opendialog.Files); end; end; |
Re: Popup, wie erkenne ich wo aktiviert wurde
Und statt AddStrings könnte man auch Assign nehmen ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 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 by Thomas Breitkreuz