Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   ListView Item und ein Popup Menu (https://www.delphipraxis.net/150952-listview-item-und-ein-popup-menu.html)

bezarre 1. Mai 2010 10:41


ListView Item und ein Popup Menu
 
Hallo,

ich habe jetzt gerade ein Popup Menü angelegt und dieses meiner TListView zugewiesen. Was mit nun dabei aufgefallen ist, ist dass sich das Menu auch öffnet, wenn man auf einen leeren Bereich in der ListView klickt, was ja auch logisch ist, aber nicht gewollt von mir.
Daher dachte ich mir, dass ich vielleicht den einzelnen Items das Menu zuweise, das scheint aber dort nicht zu gehen. Gibt es eine Möglichkeit, dass das PopUp Menu nur bei den Items geöffnet wird?

Ein paar Eigenschaften meiner TListView:
Rowselect : true
viewstyle: vsreport

Danke und Gruß
micha

Andreas L. 1. Mai 2010 10:45

Re: ListView Item und ein Popup Menu
 
Verwende das onClick-Ereignis:

Delphi-Quellcode:
  if Assigned(ListView.Selected) then
    PopupMenu.Popup(...);

bezarre 1. Mai 2010 10:49

Re: ListView Item und ein Popup Menu
 
Hallo,

danke für deine Antwort.

Delphi-Quellcode:
if Assigned(ListView1.Selected) then
    PopupMenu1.Popup();
So habe ich das jetzt gemacht. Nun muss ja aber noch eine X und Y Angabe bei Popup rein. Was geben die den an? Die Position wo sich das Popup öffnen soll? Falls ja, wie stelle ich die jetzige Position der Maus fest?

// Edit
Delphi-Quellcode:
procedure TForm2.ListView1Click(Sender: TObject);
var
  p: TPoint;
begin
  p := Mouse.CursorPos;
  if Assigned(ListView1.Selected) then
    PopupMenu1.Popup(p.X,p.Y);
end;
Habe das jetzt so gemacht, nun öffnet sich das Popup, aber immer beim Linksklick. Soll aber beim Rechtsklick sich öffnen. Muss ich da ein anderes Event nutzen?

Edit //

So habe ich es jetzt gelöst, falls es eleganter geht, immer her damit.

Delphi-Quellcode:
procedure TForm2.ListView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);

var
  p: TPoint;
begin
  p := Mouse.CursorPos;
  if Assigned(ListView1.Selected) AND (Button = mbRight) then
    PopupMenu1.Popup(p.X,p.Y);
end;

Gruß
Micha


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