Menu kontekstowe w ListView

0

Jak zrobić, aby menu kontekstowe pojawiało się dopiero, gdy klikniemy prawym przyciskiem myszy na jakieś pole w komponencie ListView? (standardowo menu kontekstowe pojawi się także w momencie gdy nie ma żadnych wartości zaznaczonych).

0

W OnMouseDown

[code] if (ListViewSessions.ItemIndex<>-1) //if anything is selected
and (Button=mbRight) //and right-click
then
if (x<=SessionsMarkerFieldSize) //checks if in marke area
then
SetMarkers.Click
else
ListViewSessions.PopupMenu.Popup
(ListViewSessions.ClientToScreen(Point(x,y)).X,
ListViewSessions.ClientToScreen(Point(x,y)).y);[/code]

Pierwszy warunek drugiego if nie jest Ci potrzebny, służy żeby w części ListView (x> pewna zmienna) wyskakiwało menu kontekstowe, a gdzie indziej działo się co innego (kopiowałem z własnego kodu). Oczywiście trzeba wyłączyć AutoPopup tego PopumMenu. Jeśli potrzebujesz odnieść się do Itema, na którym klinięto, użyje ListView.GetItemAt.

0

A nie latwiej by bylo od arzu

  if (ListViewSessions.ItemIndex<>-1)   //if anything is selected
      and (Button=mbRight)                   //and right-click
      then
         if (x<=SessionsMarkerFieldSize)    //checks if in marke area
         then
           SetMarkers.Click 
         else
           PopupMenu.Popup(Mouse.Position.X, Mouse.Position.Y;

????
//Do ponizej:
//Po pierwsze: thx :P
//Po drugie - Tutaj od razu masz dostep do zdarzen Popupa i itemow (OnItemClick itp.)

0

A nie latwiej by bylo od arzu

Pewnie latwiej, thnx

0

Eeee mi niedziała - pokazuje błąd w if (ListViewSessions.ItemIndex<>-1) - jak zmodykikowac to zeby działalo pod moim ListViewem - ListView1 ?? :(

0

Bosh!!! Tak jak się nazywa Twoje ListView - np Listview1. Generalnie lepiej jest nadawac sensowne nazwy, a nie potem pamietac do czego jest Edit24

1 użytkowników online, w tym zalogowanych: 0, gości: 1