Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #39  
Antiguo 03-10-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Cita:
Empezado por coso Ver Mensaje
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); // un Timage que tienes en el form puesto
  l.add(panel1); //  un panel 

// Para acceder a las propiedades del TImage;
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'
// obviamente he guardado un Timage en el índice 0 de la lista
// pero ahora le digo a delphi que lo trate como un panel (moldeo de tipos).
// Delphi me hará caso y lo intenta, pero al acceder a una propieda
// que en teoría es de un panel y que no tiene el Timage, 
//  (el indice cero de la lista)
// nos mostrará un ¿access violation?

l.free; // la magia del polimorfismo

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
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 03-10-2008 a las 21:20:17. Razón: corrección ortográfica
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Lista Dinamica en Java Alejo JAVA 1 17-01-2005 12:48:41
Como hacer una lista de temas.... Delphius Varios 16 16-11-2004 20:37:56
lista dinamica Telemaco PHP 6 19-08-2004 23:20:33
lo que necesito es ayuda en el TDA de una lista doblemente enlazada circular program_tda Varios 12 17-02-2004 08:45:35


La franja horaria es GMT +2. Ahora son las 23:24:13.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi