![]() |
Standardwert einer Eigenschaft
Hallo!
Wenn ich Eigenschaften in meinen Komponenten erstelle, mache ich es folgendermaßen:
Delphi-Quellcode:
und so setze ich den Standardwert:
private
FMyColor:TColor; published MyColor:TColor read FMyColor write FMyColor; end;
Delphi-Quellcode:
Dabei taucht ein Problem auf. Der Wert, den man zur Entwurfszeit einstellt, wird beim Ausführen des Programms (wohl wegen der Create-Prozedur) zurückgesetzt.
constructor TMyComp.Create(Owner:TComponent);
begin inherited Create(Owner); FMyColor:=$FF; end; Kann man dies verhindern und dennoch einen Standardwert angeben ? |
Re: Standardwert einer Eigenschaft
schau mal nach ComponentState, mir war so das es damit ging...
ca so:
Delphi-Quellcode:
if ([csDesigning] in ComponentState) then...
|
Re: Standardwert einer Eigenschaft
Hab' das schon ausprobiert. Hilft nicht. Die eingestellten Werte müssen doch aus einer der Projektdateien geladen weden.
|
Re: Standardwert einer Eigenschaft
Kann man den Standardwert nicht folgendermaßen setzen:
Delphi-Quellcode:
MfG
private
FMyColor:TColor; published MyColor:TColor read FMyColor write FMyColor default $FF; end; ... constructor TMyComp.Create(Owner:TComponent); begin inherited Create(Owner); FMyColor:=$FF; end; Binärbaum |
Re: Standardwert einer Eigenschaft
imho ist das "default" ohne Wirkung. Irgendwo in der OH steht das drin, glaube ich. Man muss den Default-Wert ins Create des Objektes packen.
|
Re: Standardwert einer Eigenschaft
@Binärbaum: Soweit ich weiss kann man "default" nur 1mal anwenden und das ist dann z.b für ein array wo du nach setzten der "default" direktive ein objekt direkt indizieren kannst ohne dessen array anzusprechen....
sagen wir mal "blah" ist ein array und is "default" in einem objekt)...dann könntest du das array so ansprechen:
Delphi-Quellcode:
ohne:
instanz[1]...
Delphi-Quellcode:
instanz.blah[1]
schreiben zu müssen |
Re: Standardwert einer Eigenschaft
Zitat:
Außerdem setzt du im Constructor (auch zur Runtime) den Wert nochmal, wenn die Komponente erstellt wird. Der soll aber aus dem Design übernommen werden. Wenn man das Setzen des Wertes im Constr. weglässt steht da 0. :wall: |
Re: Standardwert einer Eigenschaft
Zitat:
|
Re: Standardwert einer Eigenschaft
Zitat:
@Nelsoni: Du verwechselst das mit der standard-eigenschaft einer klasse! Ich frag mich warum es da probleme gibt? Vielleicht nochmal den sachverhalt genau untersuchen oder schildern. |
Re: Standardwert einer Eigenschaft
Hi Leute,
au weia, ihr seid ja ganz verwirrt! ;-) Zitat:
Zitat:
Das heißt, wenn du keinen default-Wert in der property angibst, wird der Wert, den du im OI einträgst (oder auch der, der beim Platzieren der Komponente durch den Konstruktor gesetzt wird) auf jeden Fall in der dfm gespeichert. Zur Laufzeit wird erst die Komponente erstellt (beim Laden des Formulars) und dann mit den Eigenschaften aus der dfm bestückt. MfG Stevie |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz