Absteigend von tobjectlist


Eine nützliche Methode für die Durchführung einer bestimmten Klassenversion TObjectList mit die Notwendigkeit dieser Typumwandlungen.
Hier ist eine einfache Methode der Abstieg von TObjectList, die Notwendigkeit der Typ umwandeln, bei jedem Zugriff auf die Objekte zu entfernen. Natürlich ist dies nur geeignet, wenn Sie nur einem Klassentyp speichern.
Nicht ganz besonderen Code, aber es können Sie Zeit sparen mit Eingabe in die Typumwandlungen (oder zu vergessen, in meinem Fall).
Verwenden Sie diese Methode implementieren die einfach noch ärgerlich Klassenbeziehungen wie einen Baum oder in denen eine Klasse eine Liste eines anderen verwalten muss.
z.b.
ParentObj - TMyParent
| ChildObj - TMyClass
| ...
ParentObj enthält eine Liste der ChildObjs - wie teilweise unten dargestellt.
Dies könnte ausgeweitet werden, so dass ParentObj eine zugeordnete Objekt-Liste auch hat, oder vielleicht möchten Sie den anderen Weg zu gehen, so dass ChildObj eine Liste von einer anderen Klasse von Objekten, und so weiter für enthält aber viele Ebenen von Objekten, die Sie benötigen.
Ein weiterer Vorteil der Verwendung von TObjectList ist, Sie müssen sich keine Gedanken über diese Objekte freigeben, alle Sie tun müssen, ist der Nachkomme ObjectList frei und die Liste der enthaltenen Objekte freigegeben werden (vorausgesetzt Sie OwnObjects auf True setzen die Create(OwnsObjects: boolean).
Beispielcode:
Typ
TMyClassList = class(TObjectList);
TMyParent = class(TObject)
Private
fChildren: TMyClassList;
...
öffentliche
...
Ende;
TMyClass = class(TObject)
Private
...
öffentliche
...
Ende;
TMyClassList = class(TObjectList)
Private
Funktion GetItems(Index: Integer): TMyClass;
Verfahren SetItems (Index: Integer; Wert: TMyClass);
öffentliche

Konstruktor erstellen;
Beachten Sie, dass TMyClass TObject ersetzt wird. (siehe contnrs.pas).
Dies wird der Kurs entfernen, dass die Fähigkeit, jede Art von Klasse speichern von TObject nur die von TMyClass abgeleitet.
Funktion Add(value: TMyClass): Integer;
Funktion IndexOf(value: TMyClass): Integer;
Prozedur einfügen (Index: Integer; Wert: TMyClass);
Funktion Remove(value: TMyClass): Integer;
Eigenschaftenelemente [Index: Integer]: TMyClass lesen, GetItems schreiben SetItems; in der Standardeinstellung;
Sowie Ihren eigenen Code als erforderlich d.h. FindByName etc....
Ende;
Umsetzung
Konstruktor erstellen;
beginnen
Ich habe dies hinzugefügt, weil ich immer die Liste seiner Objekte besitzen soll.
geerbte Create(true);
Ende;
Funktion TMyClassList.Add(value: TMyClass): Integer;
beginnen
Ergebnis: = geerbte Add(value);
Ende;
Funktion TMyClassList.GetItems(Index: Integer): TMyClass;
beginnen
Ahha, dass nervtötenden derjenige, der Typ setzt in hundert wirft
verschiedenen Orten durch Ihren Code)... Hmm man aufgeben, viel
besser.
Ergebnis: = TMyClass (geerbte Items[Index]);
Ende;
Funktion TMyClassList.IndexOf(value: TMyClass): Integer;
beginnen
Ergebnis: = geerbte IndexOf(value);
Ende;
Prozedur TMyClassList.Insert (Index: Integer; Wert: TMyClass);
beginnen
geerbte einfügen (Index, Value);
Ende;
Funktion TMyClassList.Remove(value: TMyClass): Integer;
beginnen
Ergebnis: = geerbte Remove(value);
Ende;
Prozedur TMyClassList.SetItems (Index: Integer; Wert: TMyClass);
beginnen
geerbte Elemente [Index]: = Wert;
Ende;









Absteigend von tobjectlist


Absteigend von tobjectlist : Mehreren tausend Tipps, um Ihr Leben einfacher machen.


Eine nützliche Methode für die Durchführung einer bestimmten Klassenversion TObjectList mit die Notwendigkeit dieser Typumwandlungen.
Hier ist eine einfache Methode der Abstieg von TObjectList, die Notwendigkeit der Typ umwandeln, bei jedem Zugriff auf die Objekte zu entfernen. Natürlich ist dies nur geeignet, wenn Sie nur einem Klassentyp speichern.
Nicht ganz besonderen Code, aber es können Sie Zeit sparen mit Eingabe in die Typumwandlungen (oder zu vergessen, in meinem Fall).
Verwenden Sie diese Methode implementieren die einfach noch ärgerlich Klassenbeziehungen wie einen Baum oder in denen eine Klasse eine Liste eines anderen verwalten muss.
z.b.
ParentObj - TMyParent
| ChildObj - TMyClass
| ...
ParentObj enthält eine Liste der ChildObjs - wie teilweise unten dargestellt.
Dies könnte ausgeweitet werden, so dass ParentObj eine zugeordnete Objekt-Liste auch hat, oder vielleicht möchten Sie den anderen Weg zu gehen, so dass ChildObj eine Liste von einer anderen Klasse von Objekten, und so weiter für enthält aber viele Ebenen von Objekten, die Sie benötigen.
Ein weiterer Vorteil der Verwendung von TObjectList ist, Sie müssen sich keine Gedanken über diese Objekte freigeben, alle Sie tun müssen, ist der Nachkomme ObjectList frei und die Liste der enthaltenen Objekte freigegeben werden (vorausgesetzt Sie OwnObjects auf True setzen die Create(OwnsObjects: boolean).
Beispielcode:
Typ
TMyClassList = class(TObjectList);
TMyParent = class(TObject)
Private
fChildren: TMyClassList;
...
öffentliche
...
Ende;
TMyClass = class(TObject)
Private
...
öffentliche
...
Ende;
TMyClassList = class(TObjectList)
Private
Funktion GetItems(Index: Integer): TMyClass;
Verfahren SetItems (Index: Integer; Wert: TMyClass);
öffentliche

Konstruktor erstellen;
Beachten Sie, dass TMyClass TObject ersetzt wird. (siehe contnrs.pas).
Dies wird der Kurs entfernen, dass die Fähigkeit, jede Art von Klasse speichern von TObject nur die von TMyClass abgeleitet.
Funktion Add(value: TMyClass): Integer;
Funktion IndexOf(value: TMyClass): Integer;
Prozedur einfügen (Index: Integer; Wert: TMyClass);
Funktion Remove(value: TMyClass): Integer;
Eigenschaftenelemente [Index: Integer]: TMyClass lesen, GetItems schreiben SetItems; in der Standardeinstellung;
Sowie Ihren eigenen Code als erforderlich d.h. FindByName etc....
Ende;
Umsetzung
Konstruktor erstellen;
beginnen
Ich habe dies hinzugefügt, weil ich immer die Liste seiner Objekte besitzen soll.
geerbte Create(true);
Ende;
Funktion TMyClassList.Add(value: TMyClass): Integer;
beginnen
Ergebnis: = geerbte Add(value);
Ende;
Funktion TMyClassList.GetItems(Index: Integer): TMyClass;
beginnen
Ahha, dass nervtötenden derjenige, der Typ setzt in hundert wirft
verschiedenen Orten durch Ihren Code)... Hmm man aufgeben, viel
besser.
Ergebnis: = TMyClass (geerbte Items[Index]);
Ende;
Funktion TMyClassList.IndexOf(value: TMyClass): Integer;
beginnen
Ergebnis: = geerbte IndexOf(value);
Ende;
Prozedur TMyClassList.Insert (Index: Integer; Wert: TMyClass);
beginnen
geerbte einfügen (Index, Value);
Ende;
Funktion TMyClassList.Remove(value: TMyClass): Integer;
beginnen
Ergebnis: = geerbte Remove(value);
Ende;
Prozedur TMyClassList.SetItems (Index: Integer; Wert: TMyClass);
beginnen
geerbte Elemente [Index]: = Wert;
Ende;


Absteigend von tobjectlist

Absteigend von tobjectlist : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Absteigend von tobjectlist
Wiezutun
Freunden empfehlen
  • gplus
  • pinterest

Kommentar

Einen Kommentar hinterlassen

Wertung