Einzelnen Beitrag anzeigen

Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Klassendesign. Frage zu Property Settern was sie dürfen und was nicht

  Alt 16. Mär 2019, 11:45
Naja wenn du dir sicher bist, dass in deiner ImageIndex die Icons immer an den Positionen 0..n liegen kannst du das so machen. Das bedeutet im Umkehrschluss aber auch, dass du bei einem neuen Status immer etwaige andere Icons verschieben und dann auch im Code die Änderungen nachziehen musst. Es sei denn, die ImageList wird nur für diese Status Images benutzt. Aber auch das halte ich für eine etwas unsaubere Implementierung.

Lagere die Ermittlung des ImageIndex lieber in eine eigene Funktion aus. Dann hast du das zentral gespeichert und bist total flexibel. Zudem verkürzt sich dein OnGetImageIndex() auf eine einzelne Zeile zur Ermittlung des ImageIndex (abgesehen vom Abrufen des NodeData Objekts). Zudem erhälst du in dem Beispiel auch direkt eine Exception statt eines falschen ImageIndex wenn du einen neuen Status einführst und vergisst, diesen in der GetImageIndexFromStatus() Methode nachzuziehen.

Delphi-Quellcode:
function GetImageIndexFromStatus(const AStatus: TStatus);
begin
  Result := -1;
  
  case AStatus of
    tsCalculating: Result := 0;
    tsError: Result := 1;
    tsSomeNewStatus: Result := 37;
    else
      raise ENotImplemented.CreateFmt('StatusCode %d not implemented.', [Ord(AStatus)])
  end;
end;
  Mit Zitat antworten Zitat