Newsgroup: it.comp.lang.delphi
Titolo: Collection

Ciao a tutti, 
ho la necessità di creare una Property di un mio componente
che sia una Collection.
E fin quì tutto bene.
Ma tra le varie Property dei CollectionItem c'è una proprietà
che è a sua volta una Collection.
Vi faccio un esempio : 
//Prima Property   
 TListSearch = class(TCollection)
  strict private
    FOwner : TComponent;
  protected
    function GetOwner : TPersistent; override;
    function GetItem(Index: Integer): TSearch;
    procedure SetItem(Index: Integer; Value: TSearch);
  public
    constructor Create(AOwner : TComponent);
    function Add : TSearch;
    property Items[Index: Integer]: TSearch read GetItem write SetItem;
  end;
//di cui la collectionItem 
 TSearch = class(TCollectionItem)
  strict private
    FListFldForSearch : TListFldForSearch;
    procedure SetListFldForSearch(const Value: TListFldForSearch);
  protected
    function GetDisplayName : String; override;
    constructor Create(Collection: TCollection); override;
  public
    procedure Assign(Source: TPersistent); override;
  published
    //questa è la property di tipo Collection
    property ListFldForSearch : TListFldForSearch read FListFldForSearch
write SetListFldForSearch;
  end;
//Seconda Collection
 TListFldForSearch = class(TCollection)
  strict private
    FOwner : TComponent;
  protected
    function GetOwner : TPersistent; override;
    function GetItem(Index: Integer): TFieldForSearch;
    procedure SetItem(Index: Integer; Value: TFieldForSearch);
  public
    constructor Create(AOwner : TComponent);
    function Add : TFieldForSearch;
    property Items[Index: Integer]: TFieldForSearch read GetItem write
SetItem;
  end;
// di cui la collection
  TFieldForSearch = class(TCollectionItem)
  strict private
    FNameField : String;
    procedure SetNameField(const Value: String);
  protected
    function GetDisplayName : String; override;
  public
    procedure Assign(Source: TPersistent); override;
    constructor Create(AOwner : TCollection); override;
    destructor Destroy; override;
  published
    property NameField : String read FNameField write SetNameField;
  end;
In cosa sbaglio?
Ciao 
Rino

> In cosa sbaglio? 
a non dire il problema quale è.... :(

Giusto.
A Design Time, seleziono il mio compoente sulla form.
Dall'object inspector clicco sulla proprietà Collection "ListSearch".
Si apre la form per inserire i vari ITEMS (tipo la form dei Fields).
Creo un nuovo item.
Clicco sulla property Collection del nuovo item "ListFldForSearch" 
ma non si apre la form per inserire i vari items della suddeta property. 
Perchè?
Ciao
Rino

creando gli item a run-time, funziona....
creando gli item a design-time, scrivendo il codice nel "view as text" delle 
form : funziona...
ma se vado sul componente, clicco sulla proprietà, si apre la form, 
aggiungo un item, lo seleziono, clicco nell'object inspector sulla 
proprietà di tipo collection dell'item selezionato, 
finalmente si apre la piccola form (stile form dei fields di un cds), 
ma appena confermo la creazione di tale item (premendo invio per esempio)
immediatamente si chiude completamente l'ide di delphi2005....
Mai capitato?

risolto...
sbagliavo il DisplayName....
tutto ok...
scuso il disturbo...
Rino.