Die Standardeigenschaft der Klasse von boolean auf true setzt zur Laufzeit false

8

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?

    
JustMe 04.08.2011, 15:22
quelle

2 Antworten

15

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 "

    
ain 04.08.2011, 15:27
quelle
5

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.

    
kludg 04.08.2011 15:28
quelle

Tags und Links