Нужно из одного ListView добавить в другой ListView все строки по заданному параметру. Причем этот параметр "проявляется" только в выделнной строке. Ну в общем вот код, но не знаю почему (вот подсказывает мен что-то), код мне кажется слегка ненормальным.....Может есть у кого идеи по оптимизации...я уже выбился из сил варианты перебирать...
- Код: Выделить всё
' _______________________________________________________________________________________________________
'| Функция добавления из одного списка в другой всех записей по заданному параметру (Списки ListView) |
'| Список из которого добавляем ListAddable |
'| Список в который добавляем ListInAdd |
'| Критерий отбора - номер калонки списка, из которого быдем выбирать (он выделен) ColumnCriteria |
' -------------------------------------------------------------------------------------------------------
Public Sub AddFromListToList(ByVal ListAddable As ListView, ByVal ListInAdd As ListView, ByVal ColumnCriteria As Integer)
Dim i As Long 'Счетчик
Dim ListItemObj As ListItem 'Тут все понятно
Dim VPAddedInComplect As String 'Это будет в выделенной строке критерий добвления из списка
VPAddedInComplect = ListAddable.ListItems.Item(ListAddable.SelectedItem.Index).SubItems(ColumnCriteria)
i = ListAddable.ListItems.Count
Do While Not i = 0 'Циклим пока счетчик не станет равен нулю
'Если в списке, из которого будем добавлять, 4-я колонка равна нашему критерию,...то
If ListAddable.ListItems.Item(i).SubItems(4) = VPAddedInComplect Then
'Добавляем все из таблицы во вторую lstAddInComplect
Set ListItemObj = ListInAdd.ListItems.Add(, , ListAddable.ListItems.Item(i))
ListItemObj.SubItems(1) = ListAddable.ListItems.Item(i).SubItems(1)
ListItemObj.SubItems(2) = ListAddable.ListItems.Item(i).SubItems(2)
ListItemObj.SubItems(3) = ListAddable.ListItems.Item(i).SubItems(3)
ListItemObj.SubItems(4) = ListAddable.ListItems.Item(i).SubItems(4)
ListItemObj.SubItems(5) = ListAddable.ListItems.Item(i).SubItems(5)
ListItemObj.SubItems(6) = ListAddable.ListItems.Item(i).SubItems(6)
'Удаляем из таблицы (из которой собственно добавляем) строку
ListAddable.ListItems.Remove (ListAddable.ListItems.Item(i).Index)
i = ListAddable.ListItems.Count 'Переопределяем счетчик на количество строк снова
Else 'А если по заданному критерию строка (ее 4-я колонка) не равна,то
'Уменьшаем счетчик ровно на единицу
i = i - 1
End If
Loop
End Sub