Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Auf Objekt in der TObjectList zugreifen (https://www.delphipraxis.net/182893-auf-objekt-der-tobjectlist-zugreifen.html)

sx2008 25. Nov 2014 23:33

AW: Auf Objekt in der TObjectList zugreifen
 
Es gibt mindestens 4 Varianten:
1.) man verwendet TObjectList und muss beim auslesen der Objekte casten
2.) man verwendet eine generische ObjektList (natürlich nur wenn man eine Delphi Version hat die das unterstützt)
3.) man leitet von TObjectList ab und überdeckt das Items[]-Property
4.) man erstellt eine Klasse die intern ein privates Objekt vom Typ TObjectList hat und präsentiert nach Aussen nur die Properties und Methoden die man für die Aufgabenstellung unbedingt braucht:
Delphi-Quellcode:
TSomeItems = class(TObject)
private
    FList : TObjectList;
public
    constructor Create;
    destructor Destroy;override;
    procedure Add(item:TSomeItem);
    function AddNew:TSomeItem;
    property Items[Index: integer]: TSomeItem read GetSomeItem; default;
    property Count:Integer read GetCount;
end;
Das bedeutet natürlich die meiste Schreibarbeit und den geringsten Grad an Wiederverwendbarkeit;
im Gegenzug kann man die Klasse auf seine Anforderungen genau zuschneiden und hat die beste Kontrolle darüber was in die Liste eingefügt oder aus der Liste gelöscht werden kann.

himitsu 26. Nov 2014 09:36

AW: Auf Objekt in der TObjectList zugreifen
 
3a) wie in 3 genannt

3b) mit überschreiben verdecken von Add und Insert, mit dem gewollten Typen

3c) mit überschreiben von Notify und am Besten auch Add/Insert


Bei 3c bekommt man zwar erst Meldung nach der Aktion.
Entweder man wirft nur eine Exception und lässt das so,
oder bei Add wird das ungültige gleich wieder entfernt und danach die Exception, bzw. beim Löschen wieder eintragen und Exception.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:33 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz