Cita:
Empezado por coso
no no, es una correcion  ...el nodo anterior y el siguiente (al menos, tengo entendido) tienen q ser del mismo tipo, para crear la 'cadena', aunque seguro q hay variedades con la clase inicial. Saludos 
|
Para algo están los moldeos de tipos. Ten en cuenta que TObjectList está definido para añadir y borrar TObject, pero que casualidad, ese tipo de dato es el base de cualquier otro en delphi, por tanto, puedes añadir TComponents, TImage, TForm... o lo que quieras, incluso mezclarlos en la misma lista de objetos, porque en definitiva, todos son TObject.
Ejemplo:
Código Delphi
[-]
var l :TObjectList;
begin
l := TObjectList.Create(true);
l.add(image1); l.add(panel1);
TImage(l.items[0]).Picture.LoadFromFile('c:\miimagen.bmp');
Para acceder al panel:
TPanel(l.items[1]).Caption := 'Ups mi panel';
Para generar un error gordo:
TPanel(l.items[0]).Caption := 'jaja, error'
l.free;
La última linea tiene miga:
- Al crear el TobjectList le pasamos en el parámetro un True, eso le indica
que cuando liberemos la lista, libere tambien los objetos que tiene dentro.
- Pero, si tiene dentro un Timage y el otro es un panel, ¿cómo sabe delphi liberarlos? cada uno hace una cosa distinta al liberarse, por ejemplo:
- el Timage debe liberar la imagen que tenga en su propiedad Picture
- el Tpanel debe liberar los controles que tenga dentro (si tiene alguno)
Esa es la magia del polimorfismo:
Tanto el Timage como el TPanel heredan de TObject, así que cuando ejecutas
l.items[0].free
no se ejecuta el método Free del TObject, en realidad se ejecuta el método Free del Timage o del TPanel, según sea el caso.
rgstuamigo, como ves esa "lista genérica que quieres hacer" está ya hecha, aunque debes comprender los conceptos para poder usarla con toda su potencia.
Aún quieres usar records, punteros o lo que quieras, adelante, no seré yo el que te ate las manos

.
Saludos