Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2009, 12:14   #21
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
unit Unit2;

interface

uses Classes;

type
 TTagItem=class
  Tag,FileName:String;
  Time:Integer;
 end;

 TTagList=class(TStringList)
  private
   function GetTag(Index:integer):TTagItem;
  public
   function AddTag(Name,Tag,FileName:string;Time:integer):integer;
   destructor Destroy;override;
   procedure DeleteTag(Index:integer);
   property Tags[Index:integer]:TTagItem read GetTag;
 end;

implementation

destructor TTagList.Destroy;
var i:integer;
begin
 for i:=0 to Self.Count-1 do Self.Objects[i].Free;
 inherited Destroy;
end;

function TTagList.GetTag;
begin
 Result:=(Self.Objects[Index] as TTagItem);
end;

procedure TTagList.DeleteTag;
begin
 Self.Objects[Index].Free;
 Self.Delete(Index);
end;

function TTagList.AddTag;
var T:TTagItem;
begin
 T:=TTagItem.Create;
 T.Tag:=Tag;
 T.FileName:=FileName;
 T.Time:=Time;
 Result:=Self.AddObject(Name,T);
end;

end.
а если так?
по сути это адаптированный TStringList

естественно в потомочном компоненте придется указать именно этот класс. но все функции старого рабочие...потому и разницы нет
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.08.2009, 11:22   #22
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Вобщем возвращаясь к первому посту. Во первых записи (структуры) использовать не обязательно, можно и классы использовать. Разница в том что переменная класса это ссылка на объект (нужно создавать), а переменная записи это сами данные. Удобство первых в передаче как параметр например, или ссылку передать или кучу данных.

Разница компонента от обычного класса - в published полях, и прописать его надо, в остальном это обычный класс.

Если нужен компонент для плейлиста, нужно просто определится с задачами. Я бы так делал:
1. Определиться что будет видеть пользователь, т.е. какой компонент будет выводить на экран? (ListBox, ListView etc.)
2. Создать класс-список (не визуальный) для хранения всего что нам нужно. Удобно на базе TList, там многое уже реализовано, добавление, удаление, элемент должен быть объектом класса (т.е. указателем) а не записью.
3. Прицепить его к свойству Object элементов видимого компонента. Сам компонент перевести в виртуальный режим чтобы не грузился долго (особенно если это ListView), хотя я с трудом представляю плейлист в к-ром тысячи песен, но на всякий случай не помешает. Остается заполнять видимый элемент из своего.
4. Теперь можно, если есть желание, оформить все это в кучу в виде компонента.

Пример класса - элемента списка (список из них будет полем в основном классе)
TPlayListItem = class
Tag: string;
FileName: string;
//и т.д. все что нужно
end;
Эти элементы и грузить в TList. Можно сделать это свойство-массив как default, и тогда в основном (с к-рым непосредственно работать) классе можно будет не указывать явно, а к списку будет по умолчанию обращение происходить. Как это сделано во многих классах, например ListBox.Items[i] = ListBox.Items.Strings[i]
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 24.08.2009, 11:33   #23
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

mutabor а можешь это все оформить, вот я сделал как мне посоветовал Пепел Феникса и у меня не все получилось.
Вложения
Тип файла: zip PLSBox.zip (2.8 Кб, 25 просмотров)
ZuBy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Календарик для ввода дат и счетчик номеров -- есть проблемы gleod Microsoft Office Excel 17 17.07.2009 16:02
Есть ли такой компонент? artemavd Компоненты Delphi 6 11.05.2009 01:47
Поиск в бд Access... Есть проблемы! mindshaft Microsoft Office Access 1 13.02.2009 09:23
Добавление файлов в плейлист Dr.Badnezz Мультимедиа в Delphi 12 26.01.2009 18:06
компонент, в котором есть вкладки Fruit Компоненты Delphi 10 01.02.2008 02:16