Воскресенье, 22.10.2017, 05:37
Приветствую Вас Гость

Не ошибается тот, кто ничего не делает.
Но и ничего не делать - ошибка.

Эмиль Кроткий

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Delphi » Создание mp3 плеера на Delphi » Плейлист и способ его визуально улучшить
Плейлист и способ его визуально улучшить
Black-LotusДата: Среда, 23.10.2013, 21:04 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 5
Репутация: 0
Статус: Offline
Начну с того что опишу саму суть моего метода.
Писал давно такое и подзабыл все так что не судите строго если с 1 раза не получится.
И так перейду к делу. Суть метода заключается в том что бы сделать 2 лист бокса в место одного.
1) хранилище ссылок на файлы.
2) для визуального обзора.
Создаем 2 листбока .
я буду использовать в теме имена листбоксов Lst1,Lst2.

I. Синхронизация работы листбокса (где Lst2 - листбокс содержащий ссылки, Lst1 - содержащий название)
Код
procedure TForm_player.lst1DblClick(Sender: TObject);
begin
  i:=Lst1.Itemindex;
  Lst2.ItemIndex:=i;
  Filename:=Lst2.Items.Strings[i];
  mode:=Play;
  player;
end;

II. Заполнение листбоксов.
Код
OpenDialog1.Title  := 'Open Files';
if listbox1.Count<>0 then i:=ListBox1.ItemIndex else i:=0;
if not OpenDialog1.Execute then exit;
   begin
   for j:=0 to OpenDialog1.Files.Count-1 do
     begin
       Lst2.Items.Add(OpenDialog1.Files.Strings[j]); // загружаем список ссылок в 2 листбокс  
       Lst1.Items.Add(ExtractFileName(OpenDialog1.Files.Strings[j])); // загружаем имена файлов в 1 листбокс и получаем визуальное отображение только имен.
end;

теперь размещаем lst2 под lst1 и получаем вместо ссылки файла имя файла.
Мой вам совет еще сделать фаил плей листа. и продумать способ создавать другие плейлисты,запоминать расположение последнего используемого 
а так же загружать в плей лист список ссылок. и выгружать используя 2 листбокса.
Кому интересно пробуйте. по вопросам пишите в личку постараюсь ответить.
©Black-Lotus
 
YouMustSuckДата: Суббота, 09.11.2013, 01:00 | Сообщение # 2
Рядовой
Группа: Пользователи
Сообщений: 3
Репутация: 0
Статус: Offline
Black-Lotus, использовать два листбокса - извращение, это говорит о том, что вы как минимум не можете сделать собственную отрисовку
 
xaramamburuДата: Суббота, 09.11.2013, 12:58 | Сообщение # 3
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
YouMustSuck
ну во первых, не совсем извращение, а вполне здравая идея, я когда делал свой первый плейлист тоже использовал два листбокса, они и сейчас висят в уроках по видеоплееру, просто я тогда понятия не имел про отрисовку и это первое, что пришло в голову. Но когда узнал про отрисовку, то думал вот сейчас все нарисую, выведу в плейлист время, название исполнителя, иконку и т.д., да все это заработало, но  уже при нескольких десятках песен в плейлисте начинало жутко тормозить, т.к. получение ID3 тегов из трека в плейлист происходит в реальном времени. Т.е.  при каждой прокрутке плейлиста происходит отрисовка и заново получение тегов для всех треков в плейлисте, а это приводит к жутким тормозам.  Поэтому пришлось снова вернуться к варианту с двумя листбоксами, в одном храним ссылки на файлы треков и используем визуальную  отрисовку, а в другом информацию из ID3 тегов в виде текстовой строки. Оба листбокса загружаются одновременно при добавлении песен в плейлист, а отрисовка происходит на основании данных из второго листбокса, что в разы быстрее, чем получать эти данные непосредственно из файлов. Да, в место второго листбокса можно использовать StingList или что то подобное.))))
 
Black-LotusДата: Вторник, 10.12.2013, 18:16 | Сообщение # 4
Рядовой
Группа: Пользователи
Сообщений: 5
Репутация: 0
Статус: Offline
отрисовка вызывала такое же действие особенно на слабеньких на которых я тестил. 2 листбокса это лишь повод к размышлению и улучшению идеи. Если бы я раскрыл все свои карты никому не было бы интересно двигаться дальше фантазировать и делать новые вещи.
 
Форум » Delphi » Создание mp3 плеера на Delphi » Плейлист и способ его визуально улучшить
Страница 1 из 11
Поиск:


Copyright MyCorp © 2017Конструктор сайтов - uCoz