VB 5/6-Tipp 0613: Beispiel für Listboxen mit Mehrfachauswahl
von Stefan Paproth
Beschreibung
Es folgt ein kurzes Beispiel, wie man eine Mehrfachauswahl sinnvoll nutzt und überprüft.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: keine | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei Projekt1.vbp ------------- '------ Anfang Formular "frmHaupt" alias frmHaupt.frm ------ ' Steuerelement: Dateiauswahlliste "filDatei" ' Steuerelement: Schaltfläche "cmdloeschen" ' Steuerelement: Schaltfläche "cmduebernehmen" ' Steuerelement: Listen-Steuerelement "lstDateien" 'Dieser Source stammt von http//www.activevb.de 'Autor: Stefan Paproth 'Mail: Pappi-@gmx.de 'Überarbeitet von Jochen Wierum (JoWi@ActiveVB.de) Option Explicit Private Sub cmdloeschen_Click() Dim f As Integer 'Schleife von 0 bis Anzahl Einträge in Listbox For f = 0 To lstDateien.ListCount - 1 'Sind wir durch? 'Diese Überprüfung ist notwendig, weil sich die 'ListCount Eigenschaft ändert, wenn ein Eintrag 'gelöscht wurde. Die Schleife prüft diese 'Eigenschaft aber nur einmal und so können 'Fehler auftreten. If lstDateien.ListCount = f Then Exit For 'Wenn Eintrag markiert dann... If lstDateien.Selected(f) = True Then '...Eintrag löschen lstDateien.RemoveItem f 'Zähler um 1 zurücksetzen, um das Element, was 'jetzt auf Position f liegt, erneut zu prüfen f = f - 1 End If Next f cmdloeschen.Enabled = False End Sub Private Sub filDatei_Click() cmduebernehmen.Enabled = True End Sub Private Sub filDatei_DblClick() 'Datei aus der Filelistbox bei Doppelklick in die Listbox einfügen: If Right(filDatei.Path, 1) = "\" Then lstDateien.AddItem filDatei.Path & filDatei.FileName Else lstDateien.AddItem filDatei.Path & "\" & filDatei.FileName End If End Sub Private Sub cmduebernehmen_Click() 'Datei aus der Filelistbox bei Buttonklick in die Listbox einfügen. Dim t As Integer 'In dieser Schleife wird überprüft, 'welche Einträge markiert wurden. 'Diese werden dann kopiert. For t = 0 To filDatei.ListCount - 1 If filDatei.Selected(t) = True Then If Right(filDatei.Path, 1) = "\" Then lstDateien.AddItem filDatei.Path & filDatei.List(t) Else lstDateien.AddItem filDatei.Path & "\" & filDatei.List(t) End If End If Next t End Sub Private Sub lstDateien_Click() cmdloeschen.Enabled = True End Sub '------- Ende Formular "frmHaupt" alias frmHaupt.frm ------- '-------------- Ende Projektdatei Projekt1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 2 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Bakterienkultur am 18.04.2005 um 14:48
Die Eigentschaft RemoveItem x bzw RemoveItem(x) der FileListBoxnexisiert laut meinem VB (Version 6) nicht.
"Objekt unterstützt die Eigenschaft oder Methode nicht"
habe aber noch keine andere Möglichkeit gefunden....
Kommentar von peter sauer am 10.09.2003 um 11:08
zum Löschen markierter Items sollte eine Listbox von hinten nach vorne durchsucht werden
For f = lstDateien.ListCount - 1 To 0 Step -1
damit werden die Probleme umgangen die beim Löschen durch die veränderte Anzahl der Items entstehen