Hi himitsu,
Zitat von
himitsu:
Also es gibt dann wohl
*3* 4 verschiedene Fälle, wie man Objekte in den published Properties behandeln müßte
1: es wird nur der Name gespeichtert und beim Laden wird ein vorhandenes Objekt gesucht (wie bei Form.ActiveControl)
2: es werden die Werte des darin enthaltenen Objektes gespeichtert/geladen
3: es wird, zusätzlich zu 2, auch noch das Objekt erstellt, wenn es beim Laden noch nicht existiert
4: es darf nichts gespeichert werden
Aber wie kann man das denn nun ordentlich unterscheiden, was zu machen wäre?
csSubComponent = 3 oder 2 ?
csTransient = 4
1. dürfte Probleme machen, wenn die Subkomponente keinen Namen hat - und das ist ja durchaus möglich wenn diese im Konstruktor der Hauptkompo erzeugt wird.
Ich würde jetzt sagen csSubComponent in der Regel 2 und csTransient immer 4 (entspricht ja auch der
OH). Für 3. dürfte es eigentlich keine Verwendung geben, da wenn das Subproperty nicht erstellt ist der Komponentenentwickler dafür sorgen muß, daß es auf nil zeigt. Sonst würde es in der
IDE im
OI eh krachen.
Überlicherweise sind die
OI Eigenschaften von Subkomponenten ja eigene Instanzen der Hauptkomponente die im Konstruktor und Desktruktor erstellt und freigeben werden. Wenn der Entwickler die Subkomponente ersetzt, erfolgt das ja überlicherweise zur Laufzeit (Assign o.ä.), also per Code. Mir ist auch kein Weg bekannt, das im
OI anders zu handeln.
Also nehm' ich 2 und 4.
Gruß Assertor