Der übliche Weg : zuweisen in create und überschreiben lassen beim Loaden funktioniert nicht,
weil Lazarus offenbar annimt, dass der Wert standardmäßig false ist und nur überschreibt, wenn true gestreamt ist.
Beispiel:
Code: Alles auswählen
type tmycomponent = class(tcomponent);
private
fblah : boolean;
published
property blah : boolean read fblah write fblah;
end;
//.....................
constructor tmycomponent.create(aowner : tcomponent);
begin inherited create(aowner);
blah := true; //Vorgabewert
end;
Wenn man nun im Objektinspektor blah auf false setzt, wird man trotzdem nach dem nächsten streamen (= loadform) wieder blah=true finden.
Der Wert wird beim Loaden nicht überschrieben. (Auch die Stored Direktive hilft natürlich nicht).
Ideen:
1.Wie kann man feststellen, ob die Komponente schon einmal gestreamt wurde (das könnte man in create nutzen) ?
2.Ein Versuch mit defineproperties misslang auch, weil dann die Eigenschaft doppelt gestreamt wurde
-- Kann man für eine Eigenschaft das Original Streaming unterdrücken ?