Wie kann ich Sortieren einer TList in Delphi auf eine beliebige Eigenschaft der Objekte, die es enthält?

Habe ich eine TList. Es enthält eine Sammlung von Objekten des gleichen Typs. Diese Objekte stammen aus einem TPersistent und haben über 50 verschiedene Eigenschaften veröffentlicht.

In meiner Anwendung kann der Benutzer die Ausgabe einer Suche nach diesen Objekten und die Ergebnisse der Suche angezeigt werden, die in einem TDrawGrid, mit der bestimmte Spalten angezeigt werden, basierend auf den Eigenschaften gesucht wird. Zum Beispiel, wenn der Benutzer die Suche auf 'Rechnung', eine 'Rechnung' - Spalte wird angezeigt, in dem Ergebnisse-raster. Ich möchte in der Lage sein, damit der Benutzer zu Sortieren das Netz. Der Clou ist natürlich, dass ich nicht im Vorfeld wissen, welche Spalten in der Startaufstellung.

Normalerweise zum Sortieren eine TList, ich würde einfach eine Funktion, wie SortOnName( p1, p2), und rufen Sie die TList-s sort() Methode. Ich möchte einen Schritt weiter gehen und einen Weg finden, übergeben Sie einen Namen der Eigenschaft, um der sort-Methode und RTTI verwenden, um den Vergleich vornehmen.

Könnte ich natürlich machen 50 andere Art Methoden und einfach. Oder, eine variable Global oder als Teil der Klasse zu tun, all diese Arbeit zu geben, um die Sortier-Methode, was zu Sortieren. Aber ich war neugierig, ob jemand von der Delphi-pro ' s gibt, hatte andere Ideen, wie man diese umzusetzen.

InformationsquelleAutor GrandmasterB | 2010-09-16
Schreibe einen Kommentar