Hallo!
Properties zu verwenden ist nicht schwer. Erst einmal die Deklaration:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| class TmyClass = class(TObject) private Fheight : Integer; Fwidth : Integer;
procedure setWidth (const value : Integer); function getWidth : Integer; public property height : Integer read Fheight write Fheight; property width : Integer read getWidth write setWidth; end; |
Wie Du siehst, gibt es zwei verschiedene Methoden, Properties zu setzen und zu lesen. Zum einen kann man sie auf andere Felder "umleiten" oder aber das Ganze über Prozeduren / Funktionen regeln.
Beide Methoden können auch gemischt werden!. Eine Property alleine hat keinen Wert.
Die erste Methode muss nicht weiter implementiert werden. Die Variable, auf welche die Property umleitet existiert ja schon.
Aber für zweite Methode muss man noch ein wenig Quelltext fabrizieren:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TmyClass.setWidth(const value : Integer); begin Fwidth := value; end;
function TmyClass.getWidth : Integer; begin result := FWidth; end; |
Das ist jetzt natürlich ein selten dämliches Beispiel, weil die Prozedur und die Funktion genau das machen, was auch bei der Verwendung der ersten Methode für width passieren würde. Aber Du kannst in die Funnktion und die Prozedur natürlich reinschreiben, was Du willst.
Dann gibt es natürlich noch die unheimlich praktischen Array-Properties. Die deklaration sieht dann wie folgt aus:
Delphi-Quelltext
1: 2: 3: 4: 5:
| private function getValue (index : Integer) : Double; procedure setValue (index : Integer; const value : Double); public property value : Double read getValue write setValue; default; |
Wie Du jetzt value mit Werten füllst, ist Dir überlassen. Wenn nun jemand mit
Delphi-Quelltext
auf die Property zugreift, dann wird k als index übergeben.
Durch das Wörtchen "default" könnte er aber auch mittels
Delphi-Quelltext
auf die Property zugreifen.
So, ich hoffe, das reicht erst einmal.
MfG
Peter
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".