ich bastele gerade an ein paar Komponenten, die eine Liste von Datensätzen (bestehend aus vier Eigenschaften) anzeigen sollen. Damit die Nutzung der Komponenten möglichst einfach in bestehende Systeme integriert werden kann, wollte ich diese Datensätze durch ein Interface definieren. Der Entwickler könnte dann einfach seine bestehenden Klassen anpassen, dass sie dieses Interface implementieren und diese an die Komponente übergeben. Dabei habe ich allerdings festgestellt, dass in ObjectPascal Interfaces keine abstrakten Properties enthalten können.

Nun stehe ich vor mehreren Möglichkeiten das Binden der Daten an die Komponenten zu bauen:
- Ich definieren ein Interface, welches Rückgabemethoden für jede Eigenschaft enthält.
Code: Alles auswählen
IData = interface function GetStart: TDateTime; function GetEnd: TDateTime; function GetName: String; function GetTag: LongInt; end;
- Alternativ enthält das Interface nur eine Methode, die einen Record mit den Daten als Paket zurückgibt.
Code: Alles auswählen
TDataPack = record Start, Ende: TDateTime; Name: String; Tag: LongInt; end; IData = interface function GetDataPack: TDataPack; end;
- Oder ich verzichte ganz auf die Interfaces und lasse nur ein Array oder eine Liste des Records aus 2. an die Komponente binden.
Eins noch im Voraus: Bitte nicht böse sein, wenn ich eure Vorschläge nicht berücksichtige. Ich werde aber definitiv alles lesen und durchdenken.
thx
Michael