Autore Topic: Come contare gli item selezionati in una listview - RISOLTO  (Letto 918 volte)

Offline astragalo

  • Gamberetto
  • *
  • Post: 37
    • Mostra profilo
Ciao, ogni tanto (spesso) trovo qualche problema che non riesco a  risolvere...

Questa volta mi trovo a voler contare gli item selezionati in una listview (con abilitato showcheck,  in mode multiple), ma non riesco a trovare una funzione che lo faccia.

Un pò come fa listview.count che restituisce il numero degli item ma solo per i selezionati.

Ringrazio in anticipo chi mi darà un aiuto.

A presto.
« Ultima modifica: 12 Marzo 2022, 21:36:20 da astragalo »

Offline cogier

  • Gambero
  • **
  • Post: 57
    • Mostra profilo
Re:Come contare gli item selezionati in una listview
« Risposta #1 il: 12 Marzo 2022, 19:01:31 »
Prova questo codice: -

Codice: [Seleziona]
' Gambas class file

ListView1 As ListView
Label1 As Label

Public Sub Form_Open()

  BuildForm

End

Public Sub BuildForm()

  Dim sText As String[] = ["Questa", "volta", "mi", "trovo", "a", "voler", "contare", "lo", "faccia"]
  Dim iLoop As Integer

  With Me
    .Arrangement = Arrange.Vertical
    .H = 400
    .W = 500
    .Padding = 5
  End With

  With ListView1 = New ListView(Me) As "ListView1"
    .Expand = True
    .ShowCheck = True
    .Mode = Select.Multiple
  End With

  For iLoop = 0 To sText.Max
    ListView1.Add(Str(iLoop), sText[iLoop])
  Next

  With Label1 = New Label(Me) As "Label1"
    .H = 28
    .W = 100
    .Font.Bold = True
    .Alignment = Align.Center
  End With

End

Public Sub ListView1_Select()

  Label1.Text = Str(ListView1.Selection.Count)

End

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.240
  • Tonno verde
    • Mostra profilo
Re:Come contare gli item selezionati in una listview
« Risposta #2 il: 12 Marzo 2022, 19:22:15 »
Giusto, anche questo codice può aiutare a capire:
Codice: [Seleziona]
Private $hList As ListView
Private $hLabel As Label

Public Sub Form_Open()

  Dim oPan As HBox
  Dim hButton As Button

  With Me
    .Height = 512
    .Width = 512
    .Arrangement = Arrange.Vertical
    .Margin = True
    .Spacing = True
  End With
  With $hList = New ListView(Me) As "ListView1"
    .Expand = True
    .Mode = 2 ' multipla
  End With
  With oPan = New HBox(Me)
    .Height = 40
    .Spacing = True
  End With
  With $hLabel = New Label(oPan)
    .Expand = True
  End With
  With hButton = New Button(oPan) As "Button1"
    .Text = "Click"
    .AutoResize = True
  End With
  popola

End

Private Sub popola()
 
'   $hList.Add("Pippo", "Pippo")
'   $hList.Add("Pluto", "Pluto")
'   $hList.Add("Paperino", "Paperino")
'   $hList.Add("Gastone", "Gastone")
'   $hList.Add("Qui", "Qui")
'   $hList.Add("Quo", "Quo")
'   $hList.Add("Qua", "Qua")
  $hList.Add("1", "Pippo")
  $hList.Add("2", "Pluto")
  $hList.Add("3", "Paperino")
  $hList.Add("4", "Gastone")
  $hList.Add("5", "Qui")
  $hList.Add("6", "Quo")
  $hList.Add("7", "Qua")
 
End


Public Sub Button1_Click()

  Dim s As String

  For Each s In $hList.Selection
    ' $hLabel.text = $hLabel.text & s & " "
    $hLabel.text = $hLabel.text & $hList[s].Text & " "
    ' $hList.Remove(s)
  Next
  $hList.UnSelectAll

End

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline astragalo

  • Gamberetto
  • *
  • Post: 37
    • Mostra profilo
Re:Come contare gli item selezionati in una listview
« Risposta #3 il: 12 Marzo 2022, 21:35:57 »
Grazie ad  entrambi per avermi dato una mano.

Ho usato la soluzione di Cogier, in particolare questa parte:

Codice: [Seleziona]
Label1.Text = Str(ListView1.Selection.Count)

Avevo provato a mischiare Selection e Count in vario modo ma mi mancava anteporre Str() per convertirlo.

La soluzione di Gianluigi l'avevo già utilizzata per inviare il contenuto delle selezioni ad altre funzioni del programma, se ricordo bene proprio suggeritami da lui in un altro post.
 
A presto.
« Ultima modifica: 12 Marzo 2022, 21:37:03 da astragalo »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.240
  • Tonno verde
    • Mostra profilo
Re:Come contare gli item selezionati in una listview
« Risposta #4 il: 13 Marzo 2022, 15:15:37 »
...
Avevo provato a mischiare Selection e Count in vario modo ma mi mancava anteporre Str() per convertirlo.
...

Però questo è abbastanza grave, significa che ti limiti a utilizzare il codice che ti viene suggerito senza sforzarti troppo di capirlo.
Se avevi già usato la proprietà selection di listvew avresti dovuto comprendere che essa è una matrice dinamica di tipo stringa (bastava agire sul tasto F2) che mette pertanto a disposizione tutte le proprietà e i metodi di una matrice.

La mia non vuole essere una critica fine a se stessa serve solo a farti comprendere che non ti puoi accontentare di superare l'ostacolo momentaneo altrimenti non otterrai nessun miglioramento.
 Senza offesa  :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline astragalo

  • Gamberetto
  • *
  • Post: 37
    • Mostra profilo
Re:Come contare gli item selezionati in una listview - RISOLTO
« Risposta #5 il: 14 Marzo 2022, 01:21:11 »
Citazione
Però questo è abbastanza grave, significa che ti limiti a utilizzare il codice che ti viene suggerito senza sforzarti troppo di capirlo. 
No no, ti assicuro  che è  ancora più  grave il più  delle volte non lo capisco proprio  :rotfl:

A parte gli scherzi, sono ben consapevole che ho tanto da studiare, grazie per avermi motivato ad andare avanti.

« Ultima modifica: 14 Marzo 2022, 01:21:59 da astragalo »