![]() |
Generische Liste sichtbar im Objekt-Inspektor
Hallo,
eine eigene Komponente soll eine Listen-Eigenschaft haben die im Objekt-Inpsektor auch bearbeitet werden kann. Bisher habe ich für solche Eigenschaften eine TOwnedCollection mit TCollectionItem verwendet. Das funktioniert auch in Delphi 10.3 einwandfrei. Jetzt würde ich gerne wissen ob ich so eine Funktionalität auch mit Generics erreichen kann? Wenn ich versuche eine generische TCollection zu definieren bekomme ich folgender Fehlermeldung: Zitat:
Delphi-Quellcode:
Mit einer TCollection statt TOwnedCollection kommt der selbe Fehler. Wenn ich einfach eine generische TObjectList verwende kann diese nicht im Objekt-Inspektor bearbeitet werden. Kompilieren lässt sich das aber problemlos.
uses
..., System.Generics.Defaults, System.Generics.Collections, System.ContNrs; type TMyItem = class(TCollectionItem) private FText: string; published property Text: string read FText write FText; end; TMyCollection = class(TOwnedCollection<TMyItem>); // <-- Fehler Brauche ich vielleicht eine andere Listen-Klasse als TObjectList? Oder gehts auch mit TCollection und ich mache was falsch? Oder bleibt mir nichts anderes übrig als es wie bisher zu machen? Beispiel:
Delphi-Quellcode:
Hat jemand eine Idee?
...
TlcfBrowserCollectionItem = class; TlcfBrowserCollection = class(TOwnedCollection) protected function GetBrowser(Index: Integer): TlcfBrowserCollectionItem; procedure SetBrowser(Index: Integer; Value: TlcfBrowserCollectionItem); public function Add: TlcfBrowserCollectionItem; reintroduce; overload; virtual; property Browsers[Index: Integer]: TlcfBrowserCollectionItem read GetBrowser write SetBrowser; default; end; TlcfBrowserCollectionItem = class(TCollectionItem) private FBrowserName: String; protected procedure SetBrowserName(Value: String); public procedure AssignTo(Dest: TPersistent); override; published property BrowserName: String read FBrowserName write SetBrowserName; end; ... |
AW: Generische Liste sichtbar im Objekt-Inspektor
Erstmal ist die Fehlermeldung ja recht eindeutig: Du hast offenbar nirgendwo eine generische TOwnedCollection<T> deklariert. Aber selbst wenn, ist der Erfolg nicht unbedingt garantiert.
Der Umstand, daß eine Collection im Objekt-Inspektor bearbeitet werden kann, liegt daran, daß in ColnEdit.pas (zu finden in Source\Property Editors) für von TCollection abgleitete Properties ein Editor registriert wird. Ob der mit einer generischen Collection zurechtkommt bedarf zumindest einer Überprüfung. Die TObjectList-Abkömmlinge erfüllen diese Voraussetzung aber gar nicht und benötigen daher einen eigenen Property Editor. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz