powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как грамотно, быстро и безошибочно удалить все Selected итемы из ListView (API)?
2 сообщений из 2, страница 1 из 1
Как грамотно, быстро и безошибочно удалить все Selected итемы из ListView (API)?
    #38444080
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В VB ListView я бабахал ключи со словом "strdel"

Код: vbnet
1.
2.
3.
4.
5.
6.
    For i = 1 To ListView1(Index).ListItems.count
        If ListView1(Index).ListItems(i).Selected = True Then
            n = n + 1
            ListView1(Index).ListItems(i).Key = "strdel" & n
        End If
    Next i



А потом удалял "по ключу"
Код: vbnet
1.
2.
3.
4.
           'удаление строчек в listview1
                For i = 1 To Nsel
                    ListView1(0).ListItems.Remove CStr("strdel" & i)
                Next i



По крайне мере этот вариант работал надежно.

For each тут не прокатит.
Ключей нету.
Писать "что-то" в "какое-то скрытое поле" - не охота.

Вижу 2 варианта:
1) Итти по всем итемам с конца в начало и удалять если selected?
2) или удалять VM_GETSELECTIONMARK по числу исходного LVM_GETSELECTEDCOUNT?
Но что-то по памяти смущает. Как бы он "в процессе" не передергивал selected items (нумерацию то он точно меняет - естественно).
...
Рейтинг: 0 / 0
Как грамотно, быстро и безошибочно удалить все Selected итемы из ListView (API)?
    #38444120
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так сойдет?
Код: vbnet
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.
Public Sub RemoveSelectedItems()
  'удаляет все выделенные итемы
  Dim Nsel As Long
  Dim i As Long
  If (m_hwndLV) Then
    Nsel = Me.SelectedItemCount
    For i = 0 To Nsel - 1
      Me.RemoveItem Me.SelectedItem
    Next
  End If
End Sub

Public Function RemoveItem(ByVal iItem As Long) As Boolean
  'удаляет заданный итем
  If (m_hwndLV) Then RemoveItem = CBool(SendMessageLong(m_hwndLV, LVM_DELETEITEM, iItem, 0))
End Function

Public Property Get SelectedItemCount() As Long
  'возвращает к-во выделенных итемов
  SelectedItemCount = SendMessage(m_hwndLV, LVM_GETSELECTEDCOUNT, 0, 0)
End Property

Public Property Get SelectedItem() As Long
  'возвращает первый выделенный итем
  SelectedItem = SendMessageLong(m_hwndLV, LVM_GETNEXTITEM, -1, ByVal LVNI_SELECTED)
End Property
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как грамотно, быстро и безошибочно удалить все Selected итемы из ListView (API)?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]