Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Konstante in Object Inspector (https://www.delphipraxis.net/187790-konstante-object-inspector.html)

pustekuchen 4. Jan 2016 09:52

Konstante in Object Inspector
 
Guten Tag zusammen,

ich würde gerne in einer eigenen Komponente eine Komponenten Version im Object Inspector anzeigen lassen.

Ich habe dazu eine published read-only property angelegt.

Code:
published
    property KomponentenVersion: double read FKomponentenVersion;
Im Konstruktur habe ich die Property mit einer Konstanten initialisiert.
Code:
constructor TComp.Create(AOwner: TComponent);
begin
  inherited;
  FKomponentenVersion := KOMPONENTEN_VERSION;
end;
Wenn ich die Komponente auf die Form ziehe, wird mit jedoch nur der Default Wert 0 angezeigt und nicht der von mir festgelegte Wert.

Was mach ich hier falsch?

Vielen Dank schon einmal für Hinweise

stahli 4. Jan 2016 10:10

AW: Konstante in Object Inspector
 
Hast Du das Package neu installiert? Neu compilieren reicht nicht.

Neutral General 4. Jan 2016 10:24

AW: Konstante in Object Inspector
 
Oder versuch es mal über einen Getter der direkt KOMPONENTEN_VERSION zurückgibt.

dataspider 4. Jan 2016 10:58

AW: Konstante in Object Inspector
 
Und IMHO stored False nicht vergessen...

Delphi-Quellcode:
  property KomponentenVersion: double read GetKomponentenVersion stored False;


Frank

stahli 4. Jan 2016 11:13

AW: Konstante in Object Inspector
 
:thumb: Stimmt. Logisch.

pustekuchen 4. Jan 2016 11:30

AW: Konstante in Object Inspector
 
Vielen Dank für euere Hinweise!

Zitat:

Zitat von Neutral General (Beitrag 1325955)
Oder versuch es mal über einen Getter der direkt KOMPONENTEN_VERSION zurückgibt.

Das war es, Vielen Dank ;)

- closed -

jaenicke 4. Jan 2016 13:08

AW: Konstante in Object Inspector
 
Hintergrund:
Zuerst wird die Komponente erstellt und dabei der Konstruktor ausgeführt, danach werden die in der .dfm gespeicherten Werte ausgelesen und gesetzt. Dort wird dein Wert daher ggf. überschrieben.

Wenn du Loaded überschreibst und den Wert dort setzt, würde es daher auch funktionieren. Das wird nach dem Lesen der Werte aus der .dfm ausgeführt.

himitsu 4. Jan 2016 13:57

AW: Konstante in Object Inspector
 
Zitat:

Zitat von jaenicke (Beitrag 1325966)
Dort wird dein Wert daher ggf. überschrieben.

Delphi-Quellcode:
property KomponentenVersion: double read FKomponentenVersion;
ohne Write wird das auch überschrieben? :zwinker:

Aber, wenn man z.B. mehrere Packages nutzt, dann kann es passieren, daß in jedes Package eine andere "Version" der Konstate einkompiliert wurde.

pustekuchen 4. Jan 2016 14:16

AW: Konstante in Object Inspector
 
Zitat:

Zitat von jaenicke (Beitrag 1325966)
Hintergrund:
... danach werden die in der .dfm gespeicherten Werte ausgelesen und gesetzt. Dort wird dein Wert daher ggf. überschrieben.

Dann sollte es ja schon mit der "stored FALSE" Erweiterung ja ebenfalls funktionieren? Da damit ja gesagt wird, das der Wert nicht in der DFM gespeichert werden soll.

Das hat es jedoch nicht.

LG

jaenicke 4. Jan 2016 15:55

AW: Konstante in Object Inspector
 
Hast du die Komponente denn neu auf das Formular gelegt? Wenn die Eigenschaft schon gespeichert war, wurde sie vermutlich schlicht nicht entfernt nachdem du das hinzugefügt hattest.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz