Automatische Sortierung Gridbox & Co.

  • Was nicht jeder weiß :

    Die automatische Sortierung bei den List - Controls geschieht ja

    nach ASCII, d. h. nach 1 kommt 10, 11, 12 usw. und nicht 2, 3, 4 usw.

    Wenn die Zahlen aber gleich lang gemacht werden (z.B.001 statt 1)

    so geht auch die Sortierung richtig. Das geht am besten mit Format$().


  • Die Variante von Heinz ist natürlich schonmal sehr brauchbar.


    Noch besser wird sie (nur für Gridboxen), wenn man die erste Spalte (=Spalte 0) der Gridbox versteckt (also 0 Pixel breit macht) und dort die formatierte Version der Zahlen reinschreibt. In die 2. Spalte der Gridbox, welche die erste sichtbare ist, schreibt man dann die unformatierten. Diese sehen dann ebenfalls korrekt sortiert aus, weil immer nach der nun unsichtbaren Spalte 0 sortiert wird.


    Und man kann das ganze noch weiter auf die Spitze treiben. Mit der Message ~LVM_SORTITEMSEX und einer Callback-Funktion kann man fast beliebig sortieren. Hier ein Beispiel, das ohne versteckte 1. Spalte auskommt und trotzdem richtig sortiert:


    Siehe Microsoft-Hilfe: https://learn.microsoft.com/en…/controls/lvm-sortitemsex


    Gruß, Jens-Arne


    Und wenn wir den Geschwindigkeitsturbo zünden wollen, schreiben wir die Callback-Funktion in FreeBasic (benötigt JRPC3):


    2 Mal editiert, zuletzt von Jens-Arne () aus folgendem Grund: Ein Beitrag von Jens-Arne mit diesem Beitrag zusammengefügt.

  • Das Profan-Programm muss im 2. Beispiel übrigens "test.prf" heißen, damit die FreeBasic-Dll bei UseDll und beim Ermitteln der Einsprungadresse der Callback-Funtion richtig benannt ist. Hier heißt sie entsprechend "test_fbprocs.dll". Wenn das Profan-Programm anders heißt, muss das entsprechend angepasst werden.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!