Registriert seit: 3. Jun 2010
1.611 Beiträge
Delphi 10.3 Rio
|
AW: Klassendesign. Frage zu Property Settern was sie dürfen und was nicht
16. Mär 2019, 11:29
Also ich sehe das so, dass du den IconIndex gar nicht setzen brauchst. Es gibt auch Readonly Properties die nur einen Getter haben. Dann würde es reichen, einfach im Getter der IconIndex Property anhand des Status den richtigen Index zurückzugeben. Vorteil hier ist, dass du im SetStatus nur die Variable für den eigentlichen Status ändern musst, die Property sich nur um sich selbst kümmern muss (keine größeren Abhängigkeiten schaffen) und nicht noch durch irgendeine Setter Logik plötzlich eine andere Property geändert wird. Und du hast eine Variable weniger im Objekt.
Um das aber ganz genau zu machen, dürfte dein Objekt gar keine IconIndex Property besitzen. Das Objekt geht es nämlich nichts an, wie der Status später angezeigt wird. Ob das ein TEdit ist in dem ein anderer Text erscheint oder ein Image das die Farbe verändert spielt dann keine Rolle mehr. Alle orientieren sich nur noch am Status Flag des Objekts. Und gerade beim VirtualTreeView ist das ja relativ einfach. Einfach InvalidateNode() aufrufen und im OnGetImageIndex() bzw. On[Before|After]CellPaint() Event anhand des Status den entsprechenden Index der aktuellen ImageList ermitteln und zeichnen lassen.
Probleme würdest du schon bekommen, wenn du deine Klasse an zwei verschiedenen Stellen im Programm verwenden wolltest die zwei unterschiedliche ImageLists benutzen. Dann wäre nämlich deine komplette Speicherung des ImageIndex im Objekt nutzlos.
|