Einzelnen Beitrag anzeigen

Dejan Vu
(Gast)

n/a Beiträge
 
#19

AW: Komponente mit Objekten, die Eigenschaften der Komponente benötigen

  Alt 19. Sep 2014, 08:18
Entschuldigung. Die Begriffe waren von mir, so wie ich sie benannt hätte.

TLayoutTemplate = TEintrag
Template Layout Manager = Die Instanz von TEintragstypenList in deiner TUrlaubsplaner-Komponente.

Wenn Du also einen neuen Eintrag erstellst übergibst Du ihm deine EintragstypenList:
Delphi-Quellcode:
Procedure TUrlaubsplaner.AddEntry(aTypID : TEintragsTypID);
Var
  derNeueEintrag : TEintrag;

Begin
  derNeueEintrag := TEintrag.Create (EintragsTypenList);
  derNeueEintrag.EintragTypID := aTypID;
  EintragsList.Add(derNeueEintrag);
End;
...

Procedure TEintrag.Paint(...);
var
  vorlage : TEintrafsTyp;

Begin
  vorlage := fEintragsTypenList.FindByID(this.EintragTypID);
  ...
  // Zeichne mit den Farben, Schrifttyp etc. aus der 'vorlage'
End;
Du könntest theoretisch einem Eintrag auch gleich den ganzen TUrlaubsplaner mitgeben, aber das ist kein guter Stil, denn hier kennen sich dann zwei Klassen gegenseitig und das sollte vermieden werden (zirkuläre Abhängigkeit (*)).

So kennt der TUrlaubsplaner eine TEintragsTypenList und ein TEintrag kennt eine TEintragstypenList. Kein Zirkel, kein Problem.

(*) Aus diesem Grund mag ich auch keine TCollection.
  Mit Zitat antworten Zitat