"Neo" <neo___dk@hotmail.removethis.com> skrev i en meddelelse
news:425a2113$0$173$edfadb0f@dtext02.news.tele.dk...
> Hej alle
>
> Kan I mon hjælpe mig med den her ?
>
> Jeg har en listview (lvDag) hvor der fremkommer en popup menu når jeg
> højreklikker på den.
>
> Problemet er at jeg ikke får valgt den række jeg højreklikker på, altså
> lvDag.selecteditem.index reagerer ikke på mit højreklik.
>
> Som det er nu bliver jeg nødt til at venstreklikke med musen på den række
> jeg er interesseret i at tilgå (lvDag.selecteditem.index), og derefter
> højreklikke for popup menu.
>
> Hvad skal jeg gøre for at vælge rækken og få popup i et enkelt højreklik ?
>
> min kode ser således ud:
>
> Private Sub lvdag_MouseDown(Button As Integer, Shift As Integer, x As
> Single, y As Single)
>
> ' Make sure it's the right button.
> If Button And vbRightButton Then
>
> [en masse kode]
>
> popup:
> PopupMenu mnuPopup
> End If
>
> End Sub
>
>
> mvh Neo
'Det kan godt være der er en nemmere metode.
'Api' en og Const skal stå i formens declaration sektion.
hilsen, agner
Private Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Const LB_GETITEMHEIGHT = &H1A1
Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As
Single, Y As Single)
Dim rtn As Long, ms As Long, nr As Integer, tPerP As Integer
Dim i As Integer
tPerP = Screen.TwipsPerPixelY
If Button And vbRightButton Then
For i = 0 To List1.ListCount - 1
If List1.Selected(i) = True Then List1.Selected(i) = False
Next
rtn = SendMessage(List1.hwnd, LB_GETITEMHEIGHT, 0&, 0&)
rtn = rtn * tPerP
nr = Int(Y / rtn) + List1.TopIndex
List1.Selected(nr) = True
End If
End Sub
|