Ich versuche, ein Array einer benutzerdefinierten Klasse als eine Eigenschaft für meine Komponente zu verwenden, aber das Problem ist, dass die Werte nicht in der Komponente gespeichert wurden, das heißt, wenn ich die Werte festlege, alles speichern und wieder öffnen Das Projekt, die Werte für die Komponente verschwindet ... Mein Code sieht wie folgt aus:
%Vor% Ich weiß, dass nur veröffentlichte Eigenschaften gestreamt werden können, aber das Problem ist, dass meine Eigenschaft ein Array ist und nicht veröffentlicht werden kann ...
Ein Vorschlag, den ich hatte, war die Verwendung von DefineProperties()
, um ein benutzerdefiniertes Streaming bereitzustellen, aber ich sehe nicht, wie man das mit einem Array macht.
Andere Möglichkeit, die ich dachte, war, TMyClass zu einer Art von Klasse zu modifizieren, die TMyComponent sein könnte, wie es in TChart getan wird, dem Sie verschiedene Klassen von Reihen hinzufügen können. Aber ich weiß nicht, welche Klasse das sein sollte
Damit könnte ich die Eigenschaft MyArray entfernen und TMyClass erstellen und zu TMyComponent wie folgt hinzufügen:
%Vor%. Welches ist die bessere Option? Oder gibt es eine andere bessere Idee?
Die einfachste (und bevorzugte) Lösung besteht darin, TMyClass
von TCollectionItem
abzuleiten und TMyComponent.FMyArray
zu TOwnedCollection
zu ändern. Dann streamt der DFM die Elemente automatisch für Sie, und Sie erhalten native Design-Time-Unterstützung zum Erstellen und Bearbeiten von TMyClass
-Objekten und ihren Eigenschaften.
Versuchen Sie Folgendes:
%Vor%Tags und Links class delphi design components