![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#21 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]() Код:
по сути это адаптированный TStringList естественно в потомочном компоненте придется указать именно этот класс. но все функции старого рабочие...потому и разницы нет Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#22 |
Телепат с дипломом
Старожил
Регистрация: 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)
Проверь себя! Онлайн тестирование | Мой блог |
![]() |
![]() |
![]() |
#23 |
Участник клуба
Регистрация: 29.09.2008
Сообщений: 1,234
|
![]()
mutabor а можешь это все оформить, вот я сделал как мне посоветовал Пепел Феникса и у меня не все получилось.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Календарик для ввода дат и счетчик номеров -- есть проблемы | 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 |