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.
Spero che qualcuno possa aiutarmi a capire cosa devo modificare, per le mie conoscenze sembra tutto corretto.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
Ciao e grazie

Rispondi quotando