Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Popup, wie erkenne ich wo aktiviert wurde (https://www.delphipraxis.net/149403-popup-wie-erkenne-ich-wo-aktiviert-wurde.html)

waldforest 20. Mär 2010 17:20


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 ?

Uwe Raabe 20. Mär 2010 17:28

Re: Popup, wie erkenne ich wo aktiviert wurde
 
Delphi-Quellcode:
TPopupMenu.PopupComponent

omata 20. Mär 2010 17:31

Re: Popup, wie erkenne ich wo aktiviert wurde
 
Delphi-Quellcode:
ScreenToClient(PopupMenu.PopupPoint)
Edit: War die Frage eben nicht noch anders?

DeddyH 20. Mär 2010 17:33

Re: Popup, wie erkenne ich wo aktiviert wurde
 
Er wollte ja die Komponente wissen, nicht die Koordinate ;)

omata 20. Mär 2010 17:34

Re: Popup, wie erkenne ich wo aktiviert wurde
 
Zitat:

Zitat von DeddyH
Er wollte ja die Komponente wissen, nicht die Koordinate ;)

Edit: Hab mich wohl doch verlesen, sorry.

waldforest 20. Mär 2010 17:41

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:
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;
Da steig mein Programm mit einer Excepption aus.

daywalker9 20. Mär 2010 17:48

Re: Popup, wie erkenne ich wo aktiviert wurde
 
Ist das ActiveControl auch dein TMemo ?

waldforest 20. Mär 2010 17:50

Re: Popup, wie erkenne ich wo aktiviert wurde
 
Hallo,
ja,
ich habs gelöst.

Delphi-Quellcode:
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;
PopupMenu.PopupComponent war der richtige Hinweis

sx2008 20. Mär 2010 19:14

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:
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;
Damit ist die Anweisung (PopupMenu.PopupComponent as TMemo).Lines ausserhalb der Schleife und das ist ein Vorteil, weil sich dahinter gleich 3 Funktionsaufrufe verstecken.
Aber es geht noch besser:
Delphi-Quellcode:
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;
Man könnte jetzt die Zwischenvariable "lines" wieder eliminieren, aber das macht den Code nicht besser lesbar.

DeddyH 20. Mär 2010 19:28

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 14:05 Uhr.
Seite 1 von 2  1 2      

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