Hallo Harry...
Warum willst du dich in der Datenstruktur an das DataSet, DataSource,
DB sensitive Controls Gedöns pressen lassen?
Imho holst du dir mehr Flöhe in den Pelz als notwendig.
Persönlich habe ich mich davon komplett verabschiedet...und ein Klotz am Bein ist weg.
Mein Vorgehen:
1. Für die Daten des Programmes existieren einfache Datenobjekte (TPerson z.B.)
2. Diese werden in generischen Listen gehalten.
3. Das Füllen der Listen übernimmt eine Datenschicht welche als Interface implementiert ist. Beispiel: Data.FillList(PersonList: TPersonList)
4. Wenn die Listen gefüllt sind, werden die Daten in einem beliebigen Control dargestellt. Das Objekt hängt an dem jeweiligem Eintrag dran.
Vorteile:
1. Der Programmlogik ist es völlig wurscht wo die Daten herkommen...sie arbeitet mit den Objekten.
2. Die Datenschicht ist austauschbar... (Herkunft der Daten z.B. aus
XML oder verschiedenen
DBMS)
3. Die Daten können an verschiedene Controls übergeben werden. Du bist nicht auf die
VCL beschränkt.
Imho auch über LiveBindings.
Je nach Größe und Aufwand kann man sich das ORM (Datenschicht) selbst zusammenstellen (meine bevorzugte Variante) oder es mit einem verfügbarem Framework erledigen lassen.
Zu Filter + Sortierung:
* Sortieren der generischen Listen über Comparer
* Filtern über Neuaufbau der Anzeige über die Kriterien.
* Ableitung der Liste die ähnlich dem Comparer einen Filter erhält / übergeben bekommt. Über einen Getter gibst du die "gefilterte" Liste zurück.
...sieh es als Denkanstoß.
...ein schönes Wochenende.