Ich habe eine einfache Komponentenklasse mit boolescher Eigenschaft:
%Vor%Ich lege es auf mein Formular, setze es auf true ( SomeProperty ist auf false gesetzt, warum?), aber wenn ich versuche, auf zuzugreifen SomeProperty von der Laufzeit gibt es mich falsch. Warum ist das so?
Das liegt daran, dass der default
-Spezifizierer den Wert nicht der Eigenschaft zuweist, sondern nur dem Streaming-System, welcher Wert der Standardwert ist (und somit nicht gespeichert werden muss). Sie müssen das Prop / Feld im Konstruktor immer noch auf den gewünschten Standardwert initialisieren. Dies ist in der Hilfe dokumentiert, lesen Sie die " Speicherbezeichner "
Sie sollten die Eigenschaft auch im Konstruktor auf True setzen - sonst ist es ein Fehler:
%Vor% Standardwerte legen fest, was in der * .DFM-Datei gespeichert wird. Wenn Sie FSomeProperty
zur Entwurfszeit auf True
setzen und der Standardwert für FSomeProperty
ist True
, dann wird FSomeProperty
nicht in * .DFM gespeichert.
Wenn Sie FSomeProperty
nicht auf True
im Konstruktor initialisieren, erhalten Sie einen Fehler, den Sie beschrieben haben - FSomeProperty
erscheint zur Laufzeit in False
, obwohl zur Entwurfszeit True
gesetzt wurde.
Tags und Links delphi delphi-2010