|
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
|
|
|
|
|
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: [ 443 ]
|
|
|