Descendant de tobjectlist


Une méthode utile pour l'implémentation d'une classe spécifique de la version de TObjectList avec la nécessité pour tous ces types de moulages.
Voici une méthode simple de descendre de TObjectList pour supprimer la nécessité pour le type coulée lors de l'accès à ses objets. Bien sûr, cela ne convient que si vous êtes seulement de stocker un type de classe.
ce n'est Pas très spécial de code, mais il peut vous faire économiser du temps à taper dans tous les Type de Jette (ou l'oublier dans mon cas).
j'ai utiliser cette méthode pour mettre en œuvre ces facile mais ennuyeux relations de classe comme un Arbre ou un où une classe a besoin de maintenir une liste d'une autre.
par exemple
ParentObj - TMyParent
& nbsp & nbsp & nbsp | ChildObj - TMyClass
& nbsp & nbsp & nbsp | ...
ParentObj contient une liste de ChildObjs - comme indiqué dans la partie ci-dessous.
Cela pourrait être élargie de manière à ce que ParentObj est associé à un Objet de la Liste, ou vous pouvez aller dans l'autre sens, de sorte que ChildObj contient une liste d'une autre classe d'objets, et ainsi de suite, cependant, de nombreux niveaux, des objets dont vous avez besoin.
un Autre avantage de l'utilisation de TObjectList est que vous n'avez pas besoin de vous soucier de libérer tous ces objets, tout ce que vous devez faire est de libérer les ObjectList descendant et la liste des objets contenus sont libérés (pourvu que vous OwnObjects à true dans le Créer(OwnsObjects: boolean).
Exemple de Code:
type
& nbsp & nbsp TMyClassList = classe(TObjectList)
& nbsp & nbsp TMyParent = class(TObject)
& nbsp & nbsp privé
& ! & ! & ! & nbsp fChildren: TMyClassList
& ! & ! & ! & nbsp ...
& nbsp & nbsp public
& ! & ! & ! & nbsp ...
& nbsp & nbsp fin
& nbsp & nbsp TMyClass = class(TObject)
& nbsp & nbsp privé
& ! & ! & ! & nbsp ...
& nbsp & nbsp public
& ! & ! & ! & nbsp ...
& nbsp & nbsp fin
& nbsp & nbsp TMyClassList = classe(TObjectList)
& nbsp & nbsp privé
& ! & ! & ! & nbsp fonction GetItems(Index: Integer): TMyClass
& ! & ! & ! & nbsp procédure SetItems(Index: Integer valeur: TMyClass)
& nbsp & nbsp public

& ! & ! & ! & nbsp constructeur Créer
& ! & ! & ! & nbsp // Notez que TMyClass est le remplacement de TObject. (voir contnrs.pas).
& ! & ! & ! & nbsp // Ce sera bien sûr de supprimer la capacité de stocker tout type de classe dérivée de TObject seulement ceux de TMyClass.
& ! & ! & ! & nbsp fonction Ajouter(valeur: TMyClass): Integer
& ! & ! & ! & nbsp fonction IndexOf(valeur: TMyClass): Integer
& ! & ! & ! & nbsp procédure d'Insertion(Index: Integer valeur: TMyClass)
& ! & ! & ! & nbsp fonction Supprimer(valeur: TMyClass): Entier
& ! & ! & ! & nbsp propriété des Articles[Index: Integer]: TMyClass lire GetItems écrire SetItems par défaut
& ! & ! & ! & nbsp // en Plus de votre propre code en fonction des besoins c'est à dire FindByName etc...
& nbsp & nbsp fin
application
constructeur Créer
begin
& nbsp & nbsp // j'ai ajouté ce parce que j'ai toujours envie de la liste de ses propres objets.
& nbsp & nbsp hérité de Créer(true)
fin
fonction de TMyClassList.Ajouter(valeur: TMyClass): Integer
begin
& nbsp & nbsp Résultat := hérité Ajouter(valeur)
fin
fonction de TMyClassList.GetItems(Index: Integer): TMyClass
begin
& nbsp & nbsp // Ahha c'est ce fichus celui qui met le type jette dans une centaine de
& nbsp & nbsp // différents endroits à l'aide de votre code -).. Hmm un seul endroit, beaucoup de
& nbsp & nbsp // mieux.
& nbsp & nbsp Résultat := TMyClass(les Éléments hérités[Index])
fin
fonction de TMyClassList.IndexOf(valeur: TMyClass): Integer
begin
& nbsp & nbsp Résultat := hérité IndexOf(valeur)
fin
procédure TMyClassList.Insert(Index: Integer valeur: TMyClass)
begin
& nbsp & nbsp hérité d'Insertion(Index, value)
fin
fonction de TMyClassList.Retirer(valeur: TMyClass): Integer
begin
& nbsp & nbsp Résultat := hérité de le Retirer(valeur)
fin
procédure TMyClassList.SetItems(Index: Integer valeur: TMyClass)
begin
& nbsp & nbsp hérité des Articles[Index] := valeur
fin









Descendant de tobjectlist


Descendant de tobjectlist : Plusieurs milliers de conseils pour vous faciliter la vie.


Une methode utile pour l'implementation d'une classe specifique de la version de TObjectList avec la necessite pour tous ces types de moulages.
Voici une methode simple de descendre de TObjectList pour supprimer la necessite pour le type coulee lors de l'acces a ses objets. Bien sûr, cela ne convient que si vous etes seulement de stocker un type de classe.
ce n'est Pas tres special de code, mais il peut vous faire economiser du temps a taper dans tous les Type de Jette (ou l'oublier dans mon cas).
j'ai utiliser cette methode pour mettre en œuvre ces facile mais ennuyeux relations de classe comme un Arbre ou un ou une classe a besoin de maintenir une liste d'une autre.
par exemple
ParentObj - TMyParent
& nbsp & nbsp & nbsp | ChildObj - TMyClass
& nbsp & nbsp & nbsp | ...
ParentObj contient une liste de ChildObjs - comme indique dans la partie ci-dessous.
Cela pourrait etre elargie de maniere a ce que ParentObj est associe a un Objet de la Liste, ou vous pouvez aller dans l'autre sens, de sorte que ChildObj contient une liste d'une autre classe d'objets, et ainsi de suite, cependant, de nombreux niveaux, des objets dont vous avez besoin.
un Autre avantage de l'utilisation de TObjectList est que vous n'avez pas besoin de vous soucier de liberer tous ces objets, tout ce que vous devez faire est de liberer les ObjectList descendant et la liste des objets contenus sont liberes (pourvu que vous OwnObjects a true dans le Creer(OwnsObjects: boolean).
Exemple de Code:
type
& nbsp & nbsp TMyClassList = classe(TObjectList)
& nbsp & nbsp TMyParent = class(TObject)
& nbsp & nbsp prive
& ! & ! & ! & nbsp fChildren: TMyClassList
& ! & ! & ! & nbsp ...
& nbsp & nbsp public
& ! & ! & ! & nbsp ...
& nbsp & nbsp fin
& nbsp & nbsp TMyClass = class(TObject)
& nbsp & nbsp prive
& ! & ! & ! & nbsp ...
& nbsp & nbsp public
& ! & ! & ! & nbsp ...
& nbsp & nbsp fin
& nbsp & nbsp TMyClassList = classe(TObjectList)
& nbsp & nbsp prive
& ! & ! & ! & nbsp fonction GetItems(Index: Integer): TMyClass
& ! & ! & ! & nbsp procedure SetItems(Index: Integer valeur: TMyClass)
& nbsp & nbsp public

& ! & ! & ! & nbsp constructeur Creer
& ! & ! & ! & nbsp // Notez que TMyClass est le remplacement de TObject. (voir contnrs.pas).
& ! & ! & ! & nbsp // Ce sera bien sûr de supprimer la capacite de stocker tout type de classe derivee de TObject seulement ceux de TMyClass.
& ! & ! & ! & nbsp fonction Ajouter(valeur: TMyClass): Integer
& ! & ! & ! & nbsp fonction IndexOf(valeur: TMyClass): Integer
& ! & ! & ! & nbsp procedure d'Insertion(Index: Integer valeur: TMyClass)
& ! & ! & ! & nbsp fonction Supprimer(valeur: TMyClass): Entier
& ! & ! & ! & nbsp propriete des Articles[Index: Integer]: TMyClass lire GetItems ecrire SetItems par defaut
& ! & ! & ! & nbsp // en Plus de votre propre code en fonction des besoins c'est a dire FindByName etc...
& nbsp & nbsp fin
application
constructeur Creer
begin
& nbsp & nbsp // j'ai ajoute ce parce que j'ai toujours envie de la liste de ses propres objets.
& nbsp & nbsp herite de Creer(true)
fin
fonction de TMyClassList.Ajouter(valeur: TMyClass): Integer
begin
& nbsp & nbsp Resultat := herite Ajouter(valeur)
fin
fonction de TMyClassList.GetItems(Index: Integer): TMyClass
begin
& nbsp & nbsp // Ahha c'est ce fichus celui qui met le type jette dans une centaine de
& nbsp & nbsp // differents endroits a l'aide de votre code -).. Hmm un seul endroit, beaucoup de
& nbsp & nbsp // mieux.
& nbsp & nbsp Resultat := TMyClass(les Elements herites[Index])
fin
fonction de TMyClassList.IndexOf(valeur: TMyClass): Integer
begin
& nbsp & nbsp Resultat := herite IndexOf(valeur)
fin
procedure TMyClassList.Insert(Index: Integer valeur: TMyClass)
begin
& nbsp & nbsp herite d'Insertion(Index, value)
fin
fonction de TMyClassList.Retirer(valeur: TMyClass): Integer
begin
& nbsp & nbsp Resultat := herite de le Retirer(valeur)
fin
procedure TMyClassList.SetItems(Index: Integer valeur: TMyClass)
begin
& nbsp & nbsp herite des Articles[Index] := valeur
fin


Descendant de tobjectlist

Descendant de tobjectlist : Plusieurs milliers de conseils pour vous faciliter la vie.
Recommander aux amis
  • gplus
  • pinterest

Messages récents

Commentaire

Laisser un commentaire

évaluation