Announcement

Collapse
No announcement yet.

TListView Sortier-Algorythmus

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TListView Sortier-Algorythmus

    Hallo zusammen

    ich hab ein sehr heftiges Problem mit einer TListView. Ziel ist es eine koplette TListView zu sortieren. Als erstes soll die erste Spalte sortiert werden, dannach alle SubItems. Aber so das die erste Spalte nicht verschoben wird. Ich kann also nicht die einzelnen Spalten sortieren weil sich so ja alle anderen Spalten verschieben.
    zur Veranschaulichung hab ich ein kleines HTML Beispiel:

    http://forum.digithurst.com/Tlistview/listview.html

    Das Problem ist nicht leicht zu lösen, aber vielleicht gibt es schon einen fertigen Algorythmus, oder jemand kennt einen guten Programmieransatz.

    Mfg Bruno

  • #2
    Ich hab mir da mal was überlegt, weis aber nicht ob das so auch sinnig ist. Wenn ich alle Einträge in einer Reihe zu einem String zusammenfasse und den einen String sortiere. etwa so:

    http://forum.digithurst.com/Tlistview/listview2.html

    Ist zwar nicht die beste Lösung, aber fällt euch was besseres ein?

    Mfg Brun

    Comment


    • #3
      Hi Bruno!<br>
      Die Lösung ist sehr einfach, wenn man schon öfter sortierte Listen<br>
      erstellt hat.<br>
      TlistView bietet Dir die Compare-Funktion dafür.<br>
      Brauchst Du nur überschreiben.<br>
      // eine vergleichsfunktion definieren<br>
      int __fastcall CompareNeu( void *key1, void *key2 )<br>
      {<br>
      ...<br>
      }<br>
      // Uberschreiben
      void __fastcall TListView::TListViewCompare(TObject *Sender,<br>
      TListItem *Item1, TListItem *Item2, int Data, int &Compare)<br>
      {<br>
      Compare = CompareNeu( Item1->Data, Item2->Data ); <br>
      }<br>
      In Deinem Falle brauchst Du nur die Strings miteinander vergleichen.<br>

      <br>
      Gruß Fre

      Comment


      • #4
        Danke Fred,

        ich hab zwar schon ein bisschen mit dem Compare rumprobiert, hat aber bis jetzt nicht so gut geklappt. Danke für deine Hilfe.

        Mfg Brun

        Comment

        Working...
        X