Regan hat folgendes geschrieben: |
Hy,
der Titel ist eine wenig verwirrend. Darum erkläre ich hier nochmal mein Problem. Ich habe eine neue Klasse. In dieser Klasse definiere ich ein TImage. Nun möchte ich eine Eigenschaft deklarieren, mit der ich auf Image.Picture zugreifen kann. Wie muss ich da die property deklarieren?
MfG
Regan |
Hallo,
zunächst wäre die Frage, muss es überhaupt Property sein? Du kannst ein TImage haben und 10 Methoden, die damit umgehen. Das Property-Konstrukt unterstützt dich ja nur bei Read- und Writezugriffen, indem du Getter und Setter schreiben kannst, und ev. kannst du das TIMage im Object Inspector verwalten, wenn du den nötigen Aufwand treibst. So oder so, du kannst natürlich in Get/Set ebenso wie in jeder anderen Methode auf fMyImage ebenso zugreifen wie auf fMyImage.Picture oder jede andere Eigenschaft. Eine Setter-Methode könnte also durchaus eine Datei laden, wenn der Pfad bekannt ist. Demgegenüber hat eine normale Methode den Vorteil, dass du den Pfad als Parameter übergeben kannst, was bei einem Write-Befehl nicht so einfach ist. Insbesondere kannst du mit mehreren Methoden Picture ganz verschieden laden, etwa von einem anderen Picture (das wäre das normale Write), von einer Datei oder aus der Zwischenablage.
Die Deklaration als Property hält dich natürlich nicht davon ab, zusätzliche Methoden zu schreiben, die auf TImage zugreifen, aber das halte ich nicht für sauberen Stil, etwa wenn es eine Setter-Methode für Write gibt und zusätzlich noch andere Methoden, die ebenfalls in TImage schreiben.
Gruss Reinhard