ListBox sortieren und formatieren



  • Hallo,
    ich bin grad mal wieder am üben und habe jetzt in einer ListBox einige Float Werte aufgelistet. Nun möchte ich diese Liste auf- oder absteigend sortieren lassen. Außerdem möchte ich die Liste Formatieren d.h. die Kommas sollen untereinander stehen.

    thx
    G-Kar



  • Hallo

    habe jetzt in einer ListBox einige Float Werte aufgelistet. Nun möchte ich diese Liste auf- oder absteigend sortieren

    Entweder läßt du die Listbox selber sortieren (TListBox::Sorted). Oder, was korrekter ist, sortierst die float-Werte selber (siehe die üblichen Sortierverfahren). Das bedeutet aber, das bei nachträglichem Einfügen die gesamte Liste der floats intern neu sortiert und in die ListBox eingetragen werden muß, bzw. an der neue Wert an die richtige Stelle in der sortierten Listbox eingefügt werden muß.

    Außerdem möchte ich die Liste Formatieren d.h. die Kommas sollen untereinander stehen.

    Das geht nur mit dem Event OnDrawItem, wo du dann die Ausgabe des Strings selber formatieren und zeichnen must.

    bis bald
    akari



  • Hi,

    was die Formatierung angeht: ListBox "manuell" zeichnen, jeweils die Breite des Textes VOR dem Komma ausgeben lassen (TCanvas::TextWidth), dann die nötige Einrückung im Verhältnis zum breitesten berechnen, dann Text ausgeben.
    Bezüglich der Sortierung: soweit ich weiß, hat TStringList eine Methode Sort, über die man das vornehmen kann.

    Viele Grüße,
    Christian



  • wobei man bei der Sortierung bei StringListen beachten muß, daß diese Strings sortiert und keine Zahlen, das gibt dann z.B. folgendes

    1,5
    1,7
    11,8
    12,7
    3,5
    34,7
    


  • Oops, ich dachte, das wäre so wie bei TList, daß man seine eigene Callback-Funktion angeben kann ... falsch gedacht 🙂



  • Geht doch. 🙂
    Siehe TStringList::CustomSort
    Wobei es hier einfacher ist erst die Liste der floats zu sortieren und die dann in die Listbox einfügen.


Anmelden zum Antworten