| |

Fortgeschrittene ProgrammierungListboxe: Eine sortieren, 3 andere anpassen? | |  | Autor: niko001 | Datum: 16.01.06 21:43 |
| Hey!
Ich habe 4 Listboxen, von der ich EINE sortieren möchte, das klappt auch schon. Jetzt sollen aber die restlichen 3 Listboxen an die neu sortierte angepasst werden, d.h. die einträge sollen mit verschoben werden!
Wie könnte ich das lösen? Mein Sortiercode ist folgender:
Public Function LBSortItem(ByRef hLBox As ListBox, _
ByRef hOrder As Boolean) As Boolean
Dim rApi As Long
Dim idx As Integer
Dim maxElements As Integer
Dim tmpLB() As String
Debug.Print Timer & " " & Time$
If hOrder = True Then
'LB-Sortierung absteigend
If hLBox.Sorted = True Then
' kann nicht sortiert werden !
LBSortItem = False
Exit Function
End If
Else
' LB-Sortierung aufsteigend (Standard!)
If hLBox.Sorted = True Then
'keine weitere Sortierung notwendig!
LBSortItem = True
Exit Function
End If
End If
' Einträge sortieren
' zuerst alle Einträge in Array u. sortieren
ReDim tmpLB(hLBox.ListCount - 1)
maxElements = hLBox.ListCount
For idx = 0 To hLBox.ListCount - 1
tmpLB(idx) = hLBox.List(idx)
Next
' Array sortieren
Call SortArray2(tmpLB(), 0, maxElements - 1)
' LB löschen/leeren u. wieder füllen
hLBox.Clear
''
lstName.Clear
''
For idx = 0 To maxElements - 1
If hOrder = True Then
hLBox.AddItem tmpLB(idx), 0
Else
hLBox.AddItem tmpLB(idx)
End If
Next
Debug.Print Timer; " "; Time$
End Function
' Array sortieren - Variante 2 >QuickSort<
' < 1 sek. bei 1.000 / ca. 1 sek bei 10.000 Strings
Public Sub SortArray2(ByRef tmpArray() As String, ByVal idxLo As _
Long, ByVal idxHi As Long)
Dim tmpString As String
Dim tmpSwap As String
Dim tmpLow As Long
Dim tmpHi As Long
tmpLow = idxLo
tmpHi = idxHi
tmpString = tmpArray((idxLo + idxHi) / 2)
While (tmpLow <= tmpHi)
While (tmpArray(tmpLow) < tmpString) And (tmpLow < idxHi)
tmpLow = tmpLow + 1
Wend
While (tmpString < tmpArray(tmpHi)) And (tmpHi > idxLo)
tmpHi = tmpHi - 1
Wend
If (tmpLow <= tmpHi) Then
tmpSwap = tmpArray(tmpLow)
tmpArray(tmpLow) = tmpArray(tmpHi)
tmpArray(tmpHi) = tmpSwap
tmpLow = tmpLow + 1
tmpHi = tmpHi - 1
End If
Wend
If (idxLo < tmpHi) Then SortArray2 tmpArray(), idxLo, tmpHi
If (tmpLow < idxHi) Then SortArray2 tmpArray(), tmpLow, idxHi
End Sub Vielen Dank,
Niko |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevWizard für VB5/6 
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|