Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Prism properties (https://www.delphipraxis.net/67658-properties.html)

felix_schmidt 18. Apr 2006 09:45


properties
 
hallo leute,

gibt es eine möglichkeit propertys einen default wert zuzuweisen??

danke

mfg felix

Elvis 18. Apr 2006 09:50

Re: properties
 
Ging in Delphi noch nie...

Was du machen kannst: Du kannst dem Designer sagen, dass property einen Default wert von 10 hat.
Dadurch wird er keinen Designer code anlegen solange der Wert nicht vom Default abweicht:

Delphi-Quellcode:
type
  SomeClass = class
  ...
  public
   [DefaultValue(10)]
   property X : Integer read ... write ...;
Sowas hier gibt's in Delphi nicht:
Delphi-Quellcode:
type
  SomeClass = class
  private
   fY : Integer := 5;
  public
    property Y : Integer read fY write fY;
    property X : Integer := 10;

felix_schmidt 18. Apr 2006 09:56

Re: properties
 
wie kann ich das dann bei einer komponente machen, dass ich zum beispiel
der property breite von vorneherein den wert 20 zuweisen kann

mfg felix

Thorben77 18. Apr 2006 09:59

Re: properties
 
Zitat:

Zitat von Elvis
Ging in Delphi noch nie...

Falsch :wink:

So sieht das in Win32-Delphi aus, ich weiß aber nicht, ob das bei Delphi.Net auch geht:
Delphi-Quellcode:
type
  TSomeClass = class(TObject)
  public
    property X : Integer read ... write ... default 35; // Das letzte is es
  end;

Sidorion 18. Apr 2006 10:01

Re: properties
 
Dies hat aber nur die Auswirkung, dass wenn im Designer dieser Wert angegeben wird a) der Wert im Objektinspektor nicht fett geschrieben wird und b) im .dfm kein Eintrag für diese Property hinterlegt wird.

Das Schlüsselwort default hat aber zwei Bedeutungen: Erstens wie hier die Festlegung eines Standardwertertes, wobei dieser angegeben werden muss und zweitens ausschliesslich bei Array-Eigenschaften kann dann bei dieser Eigenschaft die Eigenschaft weggelassen werden(z.B.: nicht myInstance.Property[0], sondern myInstance[0])

Damit hat aber diese Property NICHT automatisch diesen Wert, wenn eine Instanz erzeugt wird. Dies musst Du selber im Constructor tun.

Thorben77 18. Apr 2006 10:05

Re: properties
 
Zitat:

Zitat von Sidorion
Damit hat aber diese Property NICHT automatisch diesen Wert, wenn eine Instanz erzeugt wird. Dies musst Du selber im Constructor tun.

Ups, stimmt ja :oops: . Ich sollte so früh noch nichts posten :wink: .

sakura 18. Apr 2006 10:07

Re: properties
 
Zitat:

Zitat von Elvis
Ging in Delphi noch nie...

Schon immer, dazu gibt es schließlich den Constructor. Zu einem anderen Zeitpunkt macht es C# auch nicht, nur das man es anders schreiben kann ;)

...:cat:...

Elvis 18. Apr 2006 10:21

Re: properties
 
Zitat:

Zitat von sakura
Zitat:

Zitat von Elvis
Ging in Delphi noch nie...

Schon immer, dazu gibt es schließlich den Constructor. Zu einem anderen Zeitpunkt macht es C# auch nicht, nur das man es anders schreiben kann ;)

Da es kein AfterConstruction in .Net gibt ist das aber schon nett.
Außerdem meckert FxCop, wenn man Werte nicht als FieldInit besetzt, die keine Referenz auf self/this brauchen. ;)

BTW: ist das in C# die einzige Möglichkeit Felder VOR dem Constructor des Vorgängers besetzen zu können. Da sind beide Pascalderivate für .Net wesentlich flexibler, wobei einer auch die C#-like Zuweisung kann. :mrgreen:


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