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).
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.
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.)
A nie latwiej by bylo od arzu
Pewnie latwiej, thnx
Eeee mi niedziała - pokazuje błąd w if (ListViewSessions.ItemIndex<>-1) - jak zmodykikowac to zeby działalo pod moim ListViewem - ListView1 ?? :(
Bosh!!! Tak jak się nazywa Twoje ListView - np Listview1. Generalnie lepiej jest nadawac sensowne nazwy, a nie potem pamietac do czego jest Edit24