Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-10-2007
jorllazo jorllazo is offline
Miembro
 
Registrado: sep 2006
Ubicación: Valencia, España
Posts: 83
Poder: 18
jorllazo Va por buen camino
No se muesta la coleccion en el editor de propiedades

Hola Amigos.
Estoy creando un componente, el cual tiene una propiedad que es TablaMaestra que es del tipo TCollectionItem. A su vez esta TablaMaestra tiene una propiedad "Campos" la cual es uan coleccion de objetos TCampoMaestro que deriva tambien de TCollectionItem, el caso es que cuando estoy viendo las propiedades del componente, e intento acceder a la lista de campos (pulsando en el botoncito de los puntos) este hace caso omiso y no muestra ningun cuadro para añadir los "CampoMaestro" a la coleccion de campos.

Sin eembargo cuando esta Coleccion de "Campos" se la añado al componente directamente que dervia de TComponent el resultado es normal y al pulsar en el botoncilo me muestra el editor correspondiente desde el cual puedo añadir campos a la coleccion.

Código Delphi [-]
 
TCampoMaestro = class (TCollectionItem)
    private
      m_Nombre: string;
      m_Requerido : Boolean;
  
    published

      property Nombre : string
        read m_Nombre
        write m_Nombre;
      property Requerido : Boolean
        read m_Requerido
        write m_Requerido;
 
 end;

 
 TColCamposMaestro = class (TCollection)
  public
    function getItem(index : integer) : TCampoMaestro;
  end;
 
 TTablaMaestra = class (TCollectionItem)
    private
      m_Nombre: string;
     //**************************************
     //En este caso es el que no funciona.
      m_CamposMaestros : TColCamposMaestro;
      procedure SetCamposMaestro(camposMaestro: TColCamposMaestro);
    //***************************************
    published
      property Nombre: string
        read m_Nombre
        write m_Nombre;
      property Campos: TColCamposMaestro
        read m_CamposMaestros
        write SetCamposMaestro;
     public
         constructor Create(Collection: TCollectionItem); override;
  end;
 
 TComponente = class(TComponent)
  private
    m_NombreFormulario : string;
    m_TablaMaestra: TTablaMaestra;
 
    //********************************************
    //Campos de la tabla Maestra En este caso si que funciona
    m_CamposMaestro : TColCamposMaestro;
   //*********************************************
    procedure SetCamposMaestro(camposMaestro: TColCamposMaestro);

 public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy(); override;
 
published
  
   property NombreFormulario: string
    read  m_NombreFormulario
    write m_NombreFormulario;
   
   property TablaMaestra : TTablaMaestra
    read m_TablaMaestra
    write m_TablaMaestra;
 
  property CamposMaestro : TColCamposMaestro
    read m_CamposMaestro
    write SetCamposMaestro;

  end;
 
  procedure Register;

 implementation
 uses Math, SysUtils, StrUtils;
 
procedure Register;
 begin
  RegisterComponents('Componentes', [TComponente]);
 end;
{TTablaMaestra}
constructor TTablaMaestra.Create(Collection: TCollection);
begin
  inherited Create(Collection);
  m_CamposMaestros := TColCamposMaestro.Create(TCollectionItem);
  m_Nombre := '';
end;
procedure TTablaMaestra.SetCamposMaestro(camposMaestro: TColCamposMaestro);
begin
    m_CamposMaestros.Assign(camposMaestro);
end;

{TColCampoMaestro}
function TColCamposMaestro.getItem(Index : integer ) : TCampoMaestro ;
var
  elemento : TCampoMaestro;
begin
    elemento := nil;
    if Items[Index] <> nil Then
      elemento := Items[Index] as TCampoMaestro;
    Result := elemento;
end;
{TComponenteNT}
constructor TComponente.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  m_CamposMaestro := TColCamposMaestro.Create(TCampoMaestro);
  m_TablasDetalle := TColTablasDetalle.Create(TTablaDetalle);
  m_TablaMaestra := TTablaMaestra.Create(nil);
  //Abrir las tablas necesarias.
end;
destructor TComponente.Destroy();
begin
 
  m_CamposMaestro.Free();
  inherited Destroy();

end;
procedure TComponentePlantillaNT.SetCamposMaestro(camposMaestro: TColCamposMaestro);
begin
    m_CamposMaestro.Assign(camposMaestro);
end;

end.

Entonces sucede que cuando intento implemetar la coleccion dentro del Objeto derivado de TCollectionItem, este no funciona pero si la creo dentro de en el Objeto derivado de TComponent si que funciona bien. Es que no se puede incluir una coleccion dentro de un item parte de otra ? Que me falta? QUe hago mal?

Gracias
__________________
Gracias de Antemano

Última edición por jorllazo fecha: 31-10-2007 a las 16:51:58.
Responder Con Cita
 



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
usar un editor de propiedades para TCollectionItem droguerman OOP 2 13-05-2007 21:55:31
IIS no funciona YaninaGenia .NET 2 26-07-2006 14:21:59
BDE, no funciona martita Conexión con bases de datos 4 26-05-2006 22:21:12
¿Colecciones? jam888 Varios 2 02-01-2006 17:39:08
Descendiente de TCollectionItem de solo lectura adlfv OOP 3 15-09-2005 15:59:55


La franja horaria es GMT +2. Ahora son las 03:30:35.


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