Wenn du unbedingt darauf bestehst hier die Geschichte: Ich stelle Daten tabellarisch dar. Jede Zeile bildet eine Einheit, es gibt 5 Spalten. Da ich manche Zeilen hervorheben will, muss ich TDrawGrid statt TStringGrid verwenden (
http://www.lazarusforum.de/viewtopic.php?f=18&t=1955" onclick="window.open(this.href);return false;). Für die Daten habe ich also eine Klasse erstellt: TAktion. Dann habe ich TAktionen von TList abgeleitet, um die TAktion-Objekte in einer Liste zu speichern. In DrawGrid.DrawCell stelle ich die Daten entsprechend dar. Mein DrawGrid hat die Einstellung TitleStyle = tsNative. Über Columns.Title.Caption habe ich die Beschriftung der FixedRow angegeben (u.a. "Start" und "Ende"). Da ich eingestellt habe, dass der User die Spalten verschieben kann, kann ich deren Anordnung nur noch über den Test auf Title.Caption ermitteln. Bei Klick auf die FixedRow wird OnHeaderClick ausgelöst. Dort ermittle ich, auf welche Spalte geklickt wurde, und rufe z.B. SortBy('Start'); auf. In SortedBy wird der String gespeichert, nach dessen Spalte sortiert worden ist (wird gelöscht in Add und bei Änderungen). Bei erneutem Klick auf die selbe Spalte (SortedBy = Title.Caption), soll rückwärts sortiert werden. Dazu brauche ich SortedRev. Dort wird gespeichert, ob bereits rückwärts sortiert ist.
So, jetzt weißt du Bescheid

Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!