Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Private Variablen über Eigenschaft öffentlich machen (https://www.delphipraxis.net/113362-private-variablen-ueber-eigenschaft-oeffentlich-machen.html)

Christian18 6. Mai 2008 18:56


Private Variablen über Eigenschaft öffentlich machen
 
Hallo,

wenn ich in einer Klasse eine Priavte Variable Deklariere und diese trotzdem öffentlich machen will, dann mache ich das so:

Delphi-Quellcode:
  published
    property DBGrid: TDBGrid Read FDBGrid Write FDBGrid;
Meine Frage ist nun, was bedeuten die folgenen Schlüsselwörter? Ich werde aus der Delphi Hilfe nicht so ganz schlau!

Delphi-Quellcode:
stored, default und nodefault
Und dann habe ich auch noch eine andere Frage:

Wenn ich eine Eigenschaft nicht setze, wie kann ich einen Standartwert setzen? Kann ja mal sein, dass man vergisst eine Eigenschaft zu setzen. Ich habe es über Default probiert funktioniert aber leider nicht.

Bsp.:

Delphi-Quellcode:
    property FocusTextColor: TColor Read FFocusTextColor Write FFocusTextColor Default clBlack;
MFG Christian18

mkinzler 6. Mai 2008 19:05

Re: Private Variablen über Eigenschaft öffentlich machen
 
default ist auch nicht der wert der genommen wird, wenn keiner gesetzt wird, sondern der Wert der nicht in der dfm gespeichert wird.
Du musst den wert im Konstruktor vorbelegen

FAlter 6. Mai 2008 19:07

Re: Private Variablen über Eigenschaft öffentlich machen
 
Hi,

stored, default und nodefault sind nur unter published wichtig und betreffen das Speichern in der DFM.

Defaultwerte werden nicht gespeichert, d. h. wenn der Wert, den du hinter default angegeben hast, da ist, wird es nicht in der DFM gespeichert (wenn keiner angegeben ist, ist z. B. bei Zahlen 0 default, bei Strings Leerstrings und bei Objekten nil. Auf diesen Wert solltest du dann auch im Create initialisieren.

Nodefault heißt, dass ein geerbter Defaultwert wieder entfernt wird.

Über stored kannst du angeben, ob es überhaupt in der DFM gespeichert werden soll. Ansonsten wird zwar in der DFM ein Eintrag angezeigt, dieser aber nicht gespeichert (sinnvoll z. B. bei ReadOnly-Werten, die zur Entwurfszeit angezeigt werden sollen), über stored false oder stored <Feld vom Typ Boolean>. Standardmäßig (ohne Angabe von stored) passiert das gleiche wie bei stored true.

Mfg
FAlter

Christian18 6. Mai 2008 19:14

Re: Private Variablen über Eigenschaft öffentlich machen
 
Hi,

kann man denn innerhalb der Klasse, wo die Eigenschaften Deklariert werden, prüfen ob die Eigenschaften gesetzt wurden?

MFG Christian18

mkinzler 6. Mai 2008 19:17

Re: Private Variablen über Eigenschaft öffentlich machen
 
Implementiere einen Setter

nicodex 6. Mai 2008 19:23

Re: Private Variablen über Eigenschaft öffentlich machen
 
Zitat:

Zitat von Christian18
kann man denn innerhalb der Klasse, wo die Eigenschaften Deklariert werden, prüfen ob die Eigenschaften gesetzt wurden?

Die Setter der Properties werden aufgerufen.
Ansonsten kann man noch 'Loaded' überschreiben und die (geladenen) Properties auswerten...


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:53 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