Entstanden daraus, dass ich genervt war, für jede TCollection oder TObjectList den gleichen Kram zur Darstellung tippen zu müssen, habe ich mithilfe von RTTI und Custom Attributes einige class helper gebaut, die die Anzeige von Listen von Informationen auf eine Zeile Code beschränken, also beispielsweise:
Code: Alles auswählen
ListView1.DisplayItems(MeineCollection);
ListView1.DisplayItems<MeinObjectListItemClass>(MeineGenerischeObjectList);
Code: Alles auswählen
published
[ATreeViewDisplayText()]
property Title: string read FTitle;
property SubText: string read FSubText;
[ATreeViewParentObjectField()]
property Parent: TreeViewDemoData read FParent;
[AOVMImageIndex()]
property ImageIndex: integer read GetImageIndex;
[AOVMButton()]
property Action: string read FAction;
property OnExecute: TNotifyEvent read FOnExecute;
end;
Alternativ lässt sich TListView auch zur Anzeige aller Published-Felder eines Objektes anzeigen.
Das Repository enthält ein Demo, dort lässt sich die Verwendung in der Demo-Form schnell anschauen. Screenshot folgt noch.
Parallel hat es einen class helper, um group view in TListView unter Windows zu ermöglichen.
Nachteil 1: Custom Attributes sind erst seit FPC 3.3.1 verfügbar.
Nachteil 2: Feldnamen, die im Custom Attribute vergeben werden, fallen nicht automatisch in's i18n.
Firefly ist meine "Gruppierung" für meinen Pascal-Code, den ich als Open Source freigebe.