|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
TCollection и TCollectionItem
Ребят, подскажи как сделать свою коллекцию со вставкой, добавление и удалением. Прост никогда не работал с коллекциями.
Код:
type TTrack = class(TCollectionItem) private FId: integer; FOwner: integer; FTitle: string; FArtist: string; FUrl: string; FDuration: integer; public property Id: integer read FId write FId; property Owner: Integer read FOwner write FOwner; property Title: string read FTitle write FTitle; property Artist: string read FArtist write FArtist; property Url: string read FUrl write FUrl; property Duration: integer read FDuration write FDuration; constructor create(Collection: TCollection); override; destructor destroy; override; end; TTrackList = class(TCollection) private function GetItem(Index: Integer): TTrack; procedure SetItem(Index: integer; const Value: TTrack); public function Add: TTrack; function Insert(Index: Integer; value: TTrack): TTrack; procedure Delete(Index: Integer); property Item[Index: Integer]: TTrack read GetItem write SetItem; default; end; constructor TTrack.create(Collection: TCollection); begin inherited Create(Collection); FTitle := ''; FArtist := ''; FUrl := ''; FDuration := 0; FId := 0; FOwner := 0; end; destructor TTrack.destroy; begin FTitle := ''; FArtist := ''; FUrl := ''; FDuration := 0; FId := 0; FOwner := 0; inherited destroy; end; function TTrackList.Add: TTrack; begin result := TTrack(inherited Add); {Result.Id := id; Result.Owner := owner; Result.Title := title; Result.Artist := artist; Result.Url := url; Result.Duration := duration; } end; function TTrackList.GetItem(Index: Integer): TTrack; begin result := inherited Items[Index] as TTrack; end; procedure TTrackList.SetItem(Index: Integer; const Value: TTrack); begin inherited SetItem(index, value); end; {procedure TTrackList.Insert(Index: Integer; value: TTrack); begin result := inherited Insert(Index, value); end; } procedure TTrackList.Delete(Index: Integer); begin inherited Delete(Index); end; Код:
procedure TForm1.Button1Click(Sender: TObject); var Tracks: TTrackList; Track: TTrack; i: integer; begin Tracks := TTrackList.Create(nil); for i := 0 to 5 do begin Track := Tracks.Add; //ошибка вылетает при добавлении Track.Id := Random(100); end; for i := 0 to 5 do begin ListBox1.Items.Add(IntToStr(Tracks.Item[i].Id)); end; end; Причем в разных источниках по разному, но у меня все равно не работает |