Descendiendo desde tobjectlist


Un método útil para la implementación de una clase específica de la versión de TObjectList con la necesidad de todos aquellos que las conversiones de tipo.
Aquí es un método sencillo de descender de TObjectList para eliminar la necesidad de conversión de tipo, siempre que el acceso a sus objetos. Por supuesto, esto sólo es adecuado si sólo almacenar un tipo de clase.
No es muy especiales código, pero se puede ahorrar algo de tiempo a escribir en todas las conversiones de Tipo (o por olvidar en mi caso -).
yo uso este método para implementar aquellos fácil todavía molesto clase de relaciones, tales como un Árbol o en que una clase debe mantener una lista de otros.
por ejemplo
ParentObj - TMyParent
& nbsp & nbsp & nbsp | ChildObj - TMyClass
& nbsp & nbsp & nbsp | ...
ParentObj contiene una lista de ChildObjs - como se muestra en la parte de abajo.
Esto podría ser ampliado para que ParentObj tiene asociada una Lista de Objetos también, o usted puede desear ir a la otra, de manera que la ChildObj contiene una lista de otra clase de objetos, y así sucesivamente en función de los niveles de los objetos que usted requiere.
Otro de los beneficios de la utilización de TObjectList es que usted no necesita preocuparse de liberar a todos los objetos, todo lo que necesitas hacer es liberar el ObjectList descendiente y la lista de los objetos contenidos son liberados (siempre que usted haya establecido OwnObjects a la verdad en la creación de(OwnsObjects: boolean).
Ejemplo de Código:
tipo
& nbsp & nbsp TMyClassList = clase(TObjectList)
& nbsp & nbsp TMyParent = class(TObject)
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp fChildren: TMyClassList
& nbsp & nbsp & nbsp & nbsp ...
& nbsp & nbsp pública
& nbsp & nbsp & nbsp & nbsp ...
& nbsp & nbsp final
& nbsp & nbsp TMyClass = class(TObject)
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp ...
& nbsp & nbsp pública
& nbsp & nbsp & nbsp & nbsp ...
& nbsp & nbsp final
& nbsp & nbsp TMyClassList = clase(TObjectList)
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp función GetItems(Index: Integer): TMyClass
& nbsp & nbsp & nbsp & nbsp procedimiento SetItems(Índice: valor Entero: TMyClass)
& nbsp & nbsp pública

& nbsp & nbsp & nbsp & nbsp constructor Create
& nbsp & nbsp & nbsp & nbsp // tenga en cuenta que TMyClass es la sustitución de TObject. (ver contnrs.pas).
& nbsp & nbsp & nbsp & nbsp // por supuesto, Esto elimina la posibilidad de almacenar cualquier tipo de clase derivada de TObject sólo los de TMyClass.
& nbsp & nbsp & nbsp & nbsp función Add(valor: TMyClass): Integer
& nbsp & nbsp & nbsp & nbsp función IndexOf(valor: TMyClass): Integer
& nbsp & nbsp & nbsp & nbsp procedimiento Insertar(Índice: valor Entero: TMyClass)
& nbsp & nbsp & nbsp & nbsp función Eliminar(valor: TMyClass): Integer
& nbsp & nbsp & nbsp & nbsp propiedad de los Elementos[Index: Integer]: TMyClass leer GetItems escribir SetItems predeterminado
& nbsp & nbsp & nbsp & nbsp // Además de su propio código según sea necesario decir FindByName etc...
& nbsp & nbsp final
aplicación
constructor Create
begin
& nbsp & nbsp // he añadido esto porque siempre quiero la lista de poseer sus propios objetos.
& nbsp & nbsp heredado Crear(true)
fin
función TMyClassList.Agregar(valor: TMyClass): Integer
begin
& nbsp & nbsp Resultado := heredado Agregar(valor)
fin
función TMyClassList.GetItems(Index: Integer): TMyClass
begin
& nbsp & nbsp // Ahha esto es que molestos que pone tipo convierte en un centenar de
& nbsp & nbsp // diferentes lugares a través de su código -).. Hmm un lugar, mucho
& nbsp & nbsp // mejor.
& nbsp & nbsp Resultado := TMyClass(Artículos heredados[Index])
fin
función TMyClassList.IndexOf(valor: TMyClass): Integer
begin
& nbsp & nbsp Resultado := heredado IndexOf(valor)
fin
procedimiento TMyClassList.Insertar(Índice: valor Entero: TMyClass)
begin
& nbsp & nbsp heredado Insertar(Índice, valor)
fin
función TMyClassList.Quitar(valor: TMyClass): Integer
begin
& nbsp & nbsp Resultado := heredado Quitar(valor)
fin
procedimiento TMyClassList.SetItems(Índice: valor Entero: TMyClass)
begin
& nbsp & nbsp Artículos heredados[Índice] := valor
fin









Descendiendo desde tobjectlist


Descendiendo desde tobjectlist : Multi-millones de consejos para hacer su vida mas facil.


Un metodo util para la implementacion de una clase especifica de la version de TObjectList con la necesidad de todos aquellos que las conversiones de tipo.
Aqui es un metodo sencillo de descender de TObjectList para eliminar la necesidad de conversion de tipo, siempre que el acceso a sus objetos. Por supuesto, esto solo es adecuado si solo almacenar un tipo de clase.
No es muy especiales codigo, pero se puede ahorrar algo de tiempo a escribir en todas las conversiones de Tipo (o por olvidar en mi caso -).
yo uso este metodo para implementar aquellos facil todavia molesto clase de relaciones, tales como un Arbol o en que una clase debe mantener una lista de otros.
por ejemplo
ParentObj - TMyParent
& nbsp & nbsp & nbsp | ChildObj - TMyClass
& nbsp & nbsp & nbsp | ...
ParentObj contiene una lista de ChildObjs - como se muestra en la parte de abajo.
Esto podria ser ampliado para que ParentObj tiene asociada una Lista de Objetos tambien, o usted puede desear ir a la otra, de manera que la ChildObj contiene una lista de otra clase de objetos, y asi sucesivamente en funcion de los niveles de los objetos que usted requiere.
Otro de los beneficios de la utilizacion de TObjectList es que usted no necesita preocuparse de liberar a todos los objetos, todo lo que necesitas hacer es liberar el ObjectList descendiente y la lista de los objetos contenidos son liberados (siempre que usted haya establecido OwnObjects a la verdad en la creacion de(OwnsObjects: boolean).
Ejemplo de Codigo:
tipo
& nbsp & nbsp TMyClassList = clase(TObjectList)
& nbsp & nbsp TMyParent = class(TObject)
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp fChildren: TMyClassList
& nbsp & nbsp & nbsp & nbsp ...
& nbsp & nbsp publica
& nbsp & nbsp & nbsp & nbsp ...
& nbsp & nbsp final
& nbsp & nbsp TMyClass = class(TObject)
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp ...
& nbsp & nbsp publica
& nbsp & nbsp & nbsp & nbsp ...
& nbsp & nbsp final
& nbsp & nbsp TMyClassList = clase(TObjectList)
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp funcion GetItems(Index: Integer): TMyClass
& nbsp & nbsp & nbsp & nbsp procedimiento SetItems(Indice: valor Entero: TMyClass)
& nbsp & nbsp publica

& nbsp & nbsp & nbsp & nbsp constructor Create
& nbsp & nbsp & nbsp & nbsp // tenga en cuenta que TMyClass es la sustitucion de TObject. (ver contnrs.pas).
& nbsp & nbsp & nbsp & nbsp // por supuesto, Esto elimina la posibilidad de almacenar cualquier tipo de clase derivada de TObject solo los de TMyClass.
& nbsp & nbsp & nbsp & nbsp funcion Add(valor: TMyClass): Integer
& nbsp & nbsp & nbsp & nbsp funcion IndexOf(valor: TMyClass): Integer
& nbsp & nbsp & nbsp & nbsp procedimiento Insertar(Indice: valor Entero: TMyClass)
& nbsp & nbsp & nbsp & nbsp funcion Eliminar(valor: TMyClass): Integer
& nbsp & nbsp & nbsp & nbsp propiedad de los Elementos[Index: Integer]: TMyClass leer GetItems escribir SetItems predeterminado
& nbsp & nbsp & nbsp & nbsp // Ademas de su propio codigo segun sea necesario decir FindByName etc...
& nbsp & nbsp final
aplicacion
constructor Create
begin
& nbsp & nbsp // he añadido esto porque siempre quiero la lista de poseer sus propios objetos.
& nbsp & nbsp heredado Crear(true)
fin
funcion TMyClassList.Agregar(valor: TMyClass): Integer
begin
& nbsp & nbsp Resultado := heredado Agregar(valor)
fin
funcion TMyClassList.GetItems(Index: Integer): TMyClass
begin
& nbsp & nbsp // Ahha esto es que molestos que pone tipo convierte en un centenar de
& nbsp & nbsp // diferentes lugares a traves de su codigo -).. Hmm un lugar, mucho
& nbsp & nbsp // mejor.
& nbsp & nbsp Resultado := TMyClass(Articulos heredados[Index])
fin
funcion TMyClassList.IndexOf(valor: TMyClass): Integer
begin
& nbsp & nbsp Resultado := heredado IndexOf(valor)
fin
procedimiento TMyClassList.Insertar(Indice: valor Entero: TMyClass)
begin
& nbsp & nbsp heredado Insertar(Indice, valor)
fin
funcion TMyClassList.Quitar(valor: TMyClass): Integer
begin
& nbsp & nbsp Resultado := heredado Quitar(valor)
fin
procedimiento TMyClassList.SetItems(Indice: valor Entero: TMyClass)
begin
& nbsp & nbsp Articulos heredados[Indice] := valor
fin


Descendiendo desde tobjectlist

Descendiendo desde tobjectlist : Multi-millones de consejos para hacer su vida más fácil.
Recommander aux amis
  • gplus
  • pinterest

Comentario

Dejar un comentario

Clasificación