Trucos Ordenar elementos numéricos en un ListBox o ComboBox

Considera los siguientes elementos (nombres de fichero):
FILE1.BMP FILE2.BMP FILE3.BMP FILE10.BMP

Si los colocas en un List o un Combo ordenado (sorted = true) te quedaría la siguiente lista :

FILE1.BMP
FILE10.BMP
FILE2.BMP
FILE3.BMP

Pero lo que realmente quieres es :

FILE1.BMP
FILE2.BMP
FILE3.BMP
FILE10.BMP


Esta rutina te muestra cómo hacerlo. Después de rellenar el control, llama a la rutina ReSort, pasándole el control como único parámetro :

Sub ReSort(L As Control)
Dim P%, PP%, C%, Pre$, S$, V&, NewPos%, CheckIt%
Dim TempL$, TempItemData&, S1$

For P = 0 To L.ListCount - 1
  S = L.List(P)
  For C = 1 To Len(S)
    V = Val(Mid$(S, C))
    If V > 0 Then Exit For
  Next
  If V > 0 Then
    If C > 1 Then Pre = Left$(S, C - 1)
      NewPos = -1
      For PP = P + 1 To L.ListCount - 1
        CheckIt = False
        S1 = L.List(PP)
        If Pre <> "" Then
          If InStr(S1, Pre) = 1 Then CheckIt = True
        Else
          If Val(S1) > 0 Then CheckIt = True
        End If
        If CheckIt Then
          If Val(Mid$(S1, C)) < V Then NewPos = PP
        Else
          Exit For
        End If
      Next
    If NewPos > -1 Then
      TempL = L.List(P)
      TempItemData = L.ItemData(P)
      L.RemoveItem (P)
      L.AddItem TempL, NewPos
      L.ItemData(L.NewIndex) = TempItemData
      P = P - 1
    End If
  End If
Next
Exit Sub

From--ZD Journals' Inside Visual Basic journal



Trucos Trucos

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com