Einzelnen Beitrag anzeigen

Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Speichern eines Objekts mit einer Liste von Objekten im

  Alt 13. Apr 2010, 11:24
Zitat von RSE:
Jetzt weiß ich wieder, was mich an diesen vorgefertigten Listen immer stört: Wenn ich mir ein Item zurückgeben lasse, dann ist das vom Typ TCollectionItem und nicht von meinem Typ TMyItem. Dadurch muss ich immer erst einen Typecast durchführen, bevor ich auf meine Eigenschaften zugreifen kann.
Delphi-Quellcode:
MyItemList.ItemClass(MyItemList.Items[2]).MyProperty := 'was'; // mit TCollection
MyItemList[2].MyProperty := 'was'; // eigene Lösung mit Items als default Property
Dem Nutzer meiner Komponente kann ich das wohl kaum abverlangen. Das heißt ich müsste die Collection komplett kapseln. Ist das wirklich so gedacht?
Klar ist das so gedacht. Schau dir halt mal an, wo die VCL TCollection verwendet (z.B. TStatusPanels) - das ist schon machbar.

Zitat von RSE:
Wenn ich meine von TCollection und TCollectionItem abgeleiteten Klassen so vergewaltige, dass der Rückgabetyp TMyItem statt TCollection ist (Konstruktor, Add, Items etc. mit neuen Versionen verdecken und diverse Aufrufe umbauen), dann wird wohl der mitgelieferte Editor auch nicht mehr funktionieren. Vielleicht ergeben sich sogar noch mehr und unlösbare Fehler daraus...

Mein Fazit: Der Weg über TCollection ist Mist.

Also: Überzeugt mich vom Gegenteil oder beantwortet meine ursprüngliche Frage.
Ich werd jetzt nicht ewig versuchen, dich zu deinem Glück zu zwingen. Aber wenn ich Komponenten für Delphi schreibe, würde ich auch den Delphi-Weg dabei gehen. Wie gesagt - in den VCL-Sourcen gibt's genug Beispiele.
Uli Gerhardt
  Mit Zitat antworten Zitat