Ciao a tutti ho un porgrammino per il quale ho la necessità di selezionare una riga da una ListView e di farle cambiare colore al doppio click.
Per ora funziona solo se seleziono il campo nella prima colonna, se eseguo il doppio click nelle altre colonne la procedura esegue i calcoli ma non mi colora la riga
Ci sono controlli o proprietà che dovrei guardare? Posto il codice forse qualcuno può aiutarmi.
codice:
Private Sub FillQuadri()
Dim rsQuadri As Recordset
Dim itmx As ListItem
Set rsQuadri = GetQuadri(txtIdCentrale, txtIdSala)
lsvQuadri.ListItems.Clear
If Not (rsQuadri.EOF And rsQuadri.BOF) Then
rsQuadri.MoveFirst
While Not rsQuadri.EOF
'in questa listbox è selezionabile solo la prima colonna
Set itmx = lsvQuadri.ListItems.Add(, , rsQuadri!NOME_SALA)
itmx = rsQuadri!NOME_SALA
itmx.Tag = rsQuadri!ID_QUADRO
itmx.SubItems(1) = rsQuadri!COD_QUADRO
itmx.SubItems(2) = rsQuadri!COD_TIPO_QUADRO
itmx.SubItems(3) = rsQuadri!PROG_QUADRO
itmx.SubItems(4) = IIf(IsNull(rsQuadri!DESC_QUADRO), "", rsQuadri!DESC_QUADRO)
rsQuadri.MoveNext
Wend
End If
End Sub
Private Sub lsvQuadri_DblClick()
Dim itmx As ListItem
'se clicclo al di fuori della prima colonna itmx è nothing anche se XM e YM sono validi
Set itmx = lsvQuadri.HitTest(XM, YM)
If Not (itmx Is Nothing) Then
ColoraLinea itmx, RGB(255, 0, 50), True
Set selectedItem = itmx
lsvQuadri.Refresh
End If
End Sub
Private Sub lsvQuadri_ItemClick(ByVal Item As MSComctlLib.ListItem)
If Not (selectedItem Is Nothing) Then
ColoraLinea selectedItem, RGB(0, 0, 0), False
Set selectedItem = Nothing
lsvQuadri.Refresh
End If
End Sub
Private Sub lsvQuadri_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
XM = X
YM = Y
End Sub
Spero che qualcuno possa aiutarmi a capire cosa devo modificare, per le mie conoscenze sembra tutto corretto.
Ciao e grazie