zu gern wollte ich Einträge in der Listbox sortieren. Einfach nur anwählen und dann auf den "Hoch" bzw. "Runter"-Knopf clicken. Nach etlichen Kaffee's sortiert sich das Teil endlich! Den Code möchte ich hier mal posten, denn ihr habt sicherlich eine elegantere Lösung parat!
Code: Alles auswählen
PUBLIC SUB ButtonHoch_Click() '.................Sortierung nach oben.................
DIM nHoch AS Integer 'Zählvariable für eine Zeilennummer hochschieben
DIM ZeilenText AS String 'Text-Dateiname in der ausgewählten Zeile
DIM ZeileVorher AS String 'Text-Dateiname in der Zeile oberhalb der ausgewählten Zeile
IF AuswahlListbox > 0 THEN
AuswahlListbox = ListBoxPool.Index '--> aktueller Index der zu verschiebenden Zeile
ZeilenText = ListBoxPool.Text '--> dazu passender Listeneintrag
nHoch = AuswahlListbox - 1 'Index um 1 verkleinern
ListBoxPool.Index = nHoch 'kleineren Zeilenindex setzen
ZeileVorher = ListBoxPool.Text 'String mit Inhalt der kleineren Zeile beschreiben
ListBoxPool.Add(ZeileVorher, nHoch) 'n-1 Zeile neu schreiben
ListBoxPool.Remove(AuswahlListbox) 'n-te Zeile entfernen
ListBoxPool.Add(ZeilenText, AuswahlListbox) 'n-te Zeile neu schreiben
ListBoxPool.Remove(AuswahlListbox + 2) 'n+2te Zeile löschen
ELSE
Message("Höher geht's nicht!", "OK")
ENDIF
END
PUBLIC SUB ButtonRunter_Click() '..................Sortierung nach unten..................
DIM nTief AS Integer 'Zählvariable für eine Zeilennummer runterschieben
DIM ZeilenText AS String 'Text-Dateiname in der ausgewählten Zeile
DIM ZeileDrunter AS String 'Text-Dateiname in der Zeile unterhalb der ausgewählten Zeile
IF AuswahlListbox < ListBoxPool.Count - 1 THEN
AuswahlListbox = ListBoxPool.Index '--> aktueller Index der zu verschiebenden Zeile
ZeilenText = ListBoxPool.Text '--> dazu passender Listeneintrag
nTief = AuswahlListbox + 1 'Index um 1 erhöhen
ListBoxPool.Index = nTief 'größeren Zeilenindex setzen
ZeileDrunter = ListBoxPool.Text 'String mit Inhalt der kleineren Zeile beschreiben
ListBoxPool.Remove(nTief) 'n-te Zeile entfernen (eine nach der Auswahl)
ListBoxPool.Add(ZeilenText, nTief) 'n+1 Zeile neu schreiben
ListBoxPool.Add(ZeileDrunter, AuswahlListbox) 'n-te Zeile neu schreiben
ListBoxPool.Remove(AuswahlListbox - 1) 'überzählige Zeile Löschen
ELSE
Message("Tiefer geht's nicht!", "OK")
ENDIF
END
Viele Grüße Alf