Autor Beitrag
G-man
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 258

Win 2000, Win ME, SuSE 8.2
D5 Standard, D6 Professional
BeitragVerfasst: Mo 29.03.04 11:28 
Moin,
ich hab mir eine eigene Klasse geschrieben un möchte nun Properties hinzufügen. Aus der Delphi-Hilfe bin ich nicht schlau geworden und desshalb wollte ich fragen ob dazu jemand ein gutes Tutorial kennt oder mir das erklären kann.

_________________
...To err is human, but to really foul things up requires a computer.
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mo 29.03.04 11:38 
Luckie hat ein Tutorial zu Klassen geschrieben und auch auf meiner Homepage findest du eine Ausarbeitung zu OOP in Delphi:
www.luckie-online.de
www.manuel-poeter.de
vielleicht helfen die beiden dir ja weiter...

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 29.03.04 11:42 
Hallo!

Properties zu verwenden ist nicht schwer. Erst einmal die Deklaration:

ausblenden 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:

ausblenden 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:

ausblenden 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
ausblenden Delphi-Quelltext
1:
MyClass.value[k]					

auf die Property zugreift, dann wird k als index übergeben.

Durch das Wörtchen "default" könnte er aber auch mittels
ausblenden Delphi-Quelltext
1:
MyClass[k]					

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".
G-man Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 258

Win 2000, Win ME, SuSE 8.2
D5 Standard, D6 Professional
BeitragVerfasst: Mo 29.03.04 12:04 
Vielen dank, diese Informationen sollten reichen.

_________________
...To err is human, but to really foul things up requires a computer.