Tipp 0408 Listeneinträge löschen (API)
Autor/Einsender:
Datum:
  Angie
13.08.2004
Entwicklungsumgebung:   VB 6
Wenn mit VB-Mitteln aus einem Listenfeld markierte Listeneinträge gelöscht werden sollen, dann muss vorher mit der Selected-Eigenschaft überprüft werden, ob ein Element ausgewählt ist.
Im Gegensatz dazu, werden in diesem Beispiel zunächst die Indices der markierten Elemente mit Hilfe der API-Funktion SendMessage in ein Datenfeld kopiert und anschließend die Elemente gelöscht.
 
Option Explicit

Private Declare Function SendMessage Lib "user32" Alias _
      "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
      ByVal wParam As Long, lParam As Any) As Long

Private Const LB_GETSELCOUNT = &H190
Private Const LB_GETSELITEMS = &H191

Private Sub Form_Load()
  Dim n As Integer

  For n = 1 To 100
    List1.AddItem "Eintrag " & CStr(n)
  Next
End Sub

Private Sub cmdDelete_Click()
  Dim nSelCount   As Long
  Dim aIndexes()  As Long
  Dim n           As Long

  With List1
    nSelCount = SendMessage(.hwnd, LB_GETSELCOUNT, 0, 0)

    If nSelCount > 0 Then
      ReDim aIndexes(nSelCount - 1)
      SendMessage .hwnd, LB_GETSELITEMS, nSelCount, aIndexes(0)

      For n = UBound(aIndexes) To 0 Step -1
        .RemoveItem aIndexes(n)
      Next

      Erase aIndexes()

    Else
      MsgBox "Es sind keine Einträge zum Löschen markiert!", _
                  vbOKOnly, Title:="VB-fun-Demo"
    End If
  End With
End Sub
 
Weitere Links zum Thema
Listeneinträge löschen

Windows-Version
95
98/SE
ME
NT
2000
XP
Vista
Win 7
VB-Version
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (3 kB) Downloads bisher: [ 435 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Samstag, 6. August 2011