Как грамотно, быстро и безошибочно удалить все Selected итемы из ListView (API)? - VB

Узнай цену своей работы

Формулировка задачи:

В VB ListView я бабахал ключи со словом "strdel"

А потом удалял "по ключу"

По крайне мере этот вариант работал надежно.
For each тут не прокатит.
Ключей нету.
Писать "что-то" в "какое-то скрытое поле" - не охота.
Вижу 2 варианта:
1) Итти по всем итемам с конца в начало и удалять если selected?
2) или удалять VM_GETSELECTIONMARK по числу исходного LVM_GETSELECTEDCOUNT?
Но что-то по памяти смущает. Как бы он "в процессе" не передергивал selected items (нумерацию то он точно меняет - естественно).

Решение задачи: «Как грамотно, быстро и безошибочно удалить все Selected итемы из ListView (API)?»

textual
Листинг программы
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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.556 из 5
Похожие ответы