Modificar en tiempo de ejecución un listview
Publicado por José Vicente (1 intervención) el 24/10/2014 10:18:24
Hola, tengo un listview que cargo con los datos resultantes de cruzar dos ficheros de texto, uno fijo con lo que hay que buscar y otro que cargo en el que se buscan las coincidencias y se enumeran en el listview.
El listview tiene las columnas GRUPO, REFERENCIA, DESCRIPCIÓN, NÚMERO DE PIEZAS, PIEZAS/DÍA.
Mi problema es:
¿Cómo consigo rellenar la última columna del listview que es donde tengo que hacer la operación?
Es decir, si tengo en NÚMERO DE PIEZAS = 630 (resultado de contar las ocurrencias de una determinada referencia) tendré en PIEZAS/DÍA = 150, pués es el resultado de dividir por 6 esa cantidad.
Os dejo el fragmento de código donde lleno el listview:
¿Puede alguien echarme una mano?
Gracias.
El listview tiene las columnas GRUPO, REFERENCIA, DESCRIPCIÓN, NÚMERO DE PIEZAS, PIEZAS/DÍA.
Mi problema es:
¿Cómo consigo rellenar la última columna del listview que es donde tengo que hacer la operación?
Es decir, si tengo en NÚMERO DE PIEZAS = 630 (resultado de contar las ocurrencias de una determinada referencia) tendré en PIEZAS/DÍA = 150, pués es el resultado de dividir por 6 esa cantidad.
Os dejo el fragmento de código donde lleno el listview:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
Private Sub btnAbrir_Click(sender As System.Object, e As System.EventArgs) Handles btnAbrir.Click
Dim lenf As Long
Dim lenr As Long
Dim percent As Integer
Dim dato As String
txtArchive.Text = ""
Me.progress.Style = ProgressBarStyle.Continuous
Me.progress.Value = 0
SendMessage(progress.Handle, 1040, 3, 0)
Me.dlgOpen.InitialDirectory = path
Me.dlgOpen.Filter = "Archivos de texto (*.txt)|*.txt|Todos los archivos (*.*)|*.*"
Me.dlgOpen.ShowDialog()
If Me.dlgOpen.FileName <> "" Then
Me.progress.Visible = True
Me.lstViewMuestras.Items.Clear()
'Limpiar items acumulados de las claves
For i = 0 To keys.Length - 1
keys(i).items = 0
Next
Me.txtArchive.Text = Me.dlgOpen.FileName
Dim fr As New StreamReader(Me.dlgOpen.FileName)
Dim texto As String = fr.ReadToEnd()
filelines = texto.Split(CChar(vbNewLine))
Me.lblStat.Text = "Depurando información..."
'Eliminar aquellas líneas de texto que no contengan subclave
ReDim depuradas(filelines.Length)
Dim cdep As Int32 = 0
lenf = filelines.Length * subkeys.Length
lenr = 0
For i As Int32 = 0 To filelines.Length - 1
For j As Int32 = 0 To subkeys.Length - 1
If filelines(i).IndexOf(subkeys(j)) <> -1 Then
depuradas(cdep) = filelines(i)
cdep += 1
Exit For
End If
Next j
lenr += subkeys.Length
percent = Convert.ToInt32(100 * (lenr / lenf))
If percent >= 100 Then percent = 100
Me.progress.Value = percent
Application.DoEvents()
Next i
'Recuperamos memoria
Array.Resize(depuradas, cdep - 1)
Erase filelines
texto = ""
Me.lblStat.Text = "Procesando coincidencias..."
'Recorremos la lista de claves analizando la totalidad del texto
Me.progress.Style = ProgressBarStyle.Continuous
SendMessage(progress.Handle, 1040, 3, 0)
Me.progress.Value = 0
lenf = keys.Length * depuradas.Length
lenr = 0
For i As Int32 = 0 To keys.Length - 1
keys(i).items = 0
For j As Int32 = 0 To depuradas.Length - 1
dato = depuradas(j).Trim().ToUpper().Replace(" ", "")
If dato.IndexOf(keys(i).key) <> -1 Then
keys(i).items += 1
End If
lenr += 1
percent = Convert.ToInt32(100 * (lenr / lenf))
If percent >= 100 Then percent = 100
Me.progress.Value = percent
Application.DoEvents()
Next j
Next i
Me.progress.Style = ProgressBarStyle.Continuous
SendMessage(progress.Handle, 1040, 3, 0)
Me.progress.Value = 0
'Actualizar la lista
Me.lstViewMuestras.Items.Clear()
'AGREGAMOS AGRUPACIONES (HEADERS) AL LISTVIEW PARA CLASIFICAR
For i = 0 To heads.Length - 1
Dim grupo As New ListViewGroup(heads(i).key)
grupo.Header = heads(i).grupo
grupo.Name = heads(i).grupo
Me.lstViewMuestras.Groups.Add(grupo)
Next
'AGREGAMOS LOS ITEMS DE RECUENTO
'Dim operacion As Double = 0
Dim item As New ListViewItem
Dim grup As New ListViewGroup
For i = 0 To keys.Length - 1
'Obtenemos el grupo destino
grup = Me.lstViewMuestras.Groups(keys(i).grupo)
'Creamos el nuevo item
item = New ListViewItem(keys(i).grupo, grup)
item.SubItems.Add(keys(i).code)
item.SubItems.Add(keys(i).descp)
item.SubItems.Add(keys(i).items.ToString())
'Aquí va el calculador de piezas/día
'item.SubItems.Add(keys(i).items.ToString())
'Añadimos a la colección
Me.lstViewMuestras.Items.Add(item)
Next
'Mostramos el botón de guardar el archivo
btnGuarda.Visible = True
'Damos formato al listview
Dim c As Integer
For c = 0 To lstViewMuestras.Items.Count - 2 Step 2
lstViewMuestras.Items(c + 1).BackColor = Drawing.Color.AliceBlue
lstViewMuestras.Items(c).BackColor = Drawing.Color.AntiqueWhite
Next c
If (lstViewMuestras.Items.Count And 1) <> 0 Then
lstViewMuestras.Items(c).ForeColor = Drawing.Color.Brown
End If
Else
MsgBox("NO SE HA SELECCIONADO NINGÚN FICHERO PARA PROCESAR", MsgBoxStyle.Information, AcceptButton)
End If
Me.lblStat.Text = ""
Me.progress.Visible = False
End Sub
Gracias.
Valora esta pregunta


0