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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2009, 19:44   #1
BredoZavR
Пользователь
 
Регистрация: 05.06.2009
Сообщений: 27
По умолчанию Плейлист с помощью listbox

Возникло несколько вопросов при создании плейлиста проигрывателя, подскажите решение, если не затруднит
1. Как сделать, чтобы при окончании воспроизведения одного файла, начинал проигрываться следующий
2. Как сделать dragdrop на листбокс
3. Как реализовать отображение файлов не полным путем к этому файлу, а, к примеру, Исполнитель - Название композиции.

Пожалуйста, не надо отсылать меня на поиск по форуму - искала.
PS Используется bass.dll
Программисты... Они спокойные... У них в глазах вечность.

Последний раз редактировалось BredoZavR; 06.06.2009 в 19:48.
BredoZavR вне форума Ответить с цитированием
Старый 06.06.2009, 21:33   #2
Дима я
Форумчанин
 
Регистрация: 06.06.2009
Сообщений: 259
По умолчанию

3)S:=GetFileName(Путь к файлу);
На сколько я знаю так
Если я тебе помог Ты бы + влепить мне мог.
Дима я вне форума Ответить с цитированием
Старый 06.06.2009, 21:52   #3
BredoZavR
Пользователь
 
Регистрация: 05.06.2009
Сообщений: 27
По умолчанию

Это имя файла, а надо отображение Исполнителя и Названия..
Программисты... Они спокойные... У них в глазах вечность.
BredoZavR вне форума Ответить с цитированием
Старый 06.06.2009, 21:57   #4
856100
Форумчанин
 
Регистрация: 12.08.2008
Сообщений: 135
По умолчанию

1) Здесь нет однозначного ответа. надо все прописывать ручками.
2)насколько я знаю реализуется как с обычным списком (некогда не использовал)
3)Надо заводить базу на всех исполнителей (или как-то читать из файла)
намного проще как сказал Дима я указать название файла а путь для воспроизведения хранить еще гдени будь (например TStringList) а потом их синхронизировать.
Код:
ListBox1.Items.Add(ExtractFileName('Полный путь к вашему файлу'));
Будь проще, бери пример с одноклеточных
856100 вне форума Ответить с цитированием
Старый 06.06.2009, 22:04   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

2)поиск есть, на форуме много примеров есть.
3)вам тогда нужно читать тэги из файлов(помоему у них же на сайтте есть библиотеки для этого)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.06.2009, 22:15   #6
BredoZavR
Пользователь
 
Регистрация: 05.06.2009
Сообщений: 27
По умолчанию

Да нет на форуме про листбокс! НЕТ! есть одна тема где тоже отсылают в поиск
Программисты... Они спокойные... У них в глазах вечность.
BredoZavR вне форума Ответить с цитированием
Старый 06.06.2009, 22:52   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

http://programmersforum.ru/showpost....2&postcount=12
http://programmersforum.ru/showpost....38&postcount=9
переделайте под себя
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 06.06.2009 в 23:01.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.06.2009, 01:20   #8
Vladya
Форумчанин
 
Аватар для Vladya
 
Регистрация: 04.11.2008
Сообщений: 360
По умолчанию

Вот держи, может быть это тебе поможет, во всяком случае я так делал:
Код:
//Обработка перетаскивания пунктов листбокса
procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
APoint: TPoint;
Index, Sindex, i: integer; //index - куда бросаем, sindex - откуда тянем
Sstring, pstring: string; //строка источник и строка с путем
begin
if (Sender is TListBox) and (Source is TListBox) then
  begin
  APoint.X := X;
  APoint.Y := Y;
  with Sender as TListBox do
    begin
    Index := ItemAtPos(APoint, True);
    sindex:= ItemIndex;
    end;
  if (Index <> -1)and(sindex <> -1) then
    with Sender as TListBox do
    begin
    sstring:=Items.Strings[sindex];
    Items.Delete(sindex);
    Items.Insert(index,sstring);
    ItemIndex:=index;
    Selected[index]:=true;
    //паралельно с листбоксом изменяем масив с путями
    pstring:=pathlist[sindex];
    if index < sindex then
     for i:=sindex downto index+1 do
       pathlist[i]:=pathlist[i-1];
    if index > sindex then
     for i:=sindex to index-1 do
       pathlist[i]:=pathlist[i+1];
    pathlist[index]:=pstring;
    end;
  end;
end;
Насчет следующей песни, пиши в таймере вот такое:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin

if mpcanplay in MediaPlayer1.Capabilities then
  Begin
   ProgressBar1.Position:=trunc(MediaPlayer1.Position/ratio);
   Label2.Caption:=MusicToStr(MediaPlayer1.Position);
     if mediaplayer1.Position = mediaplayer1.Length then NextTrack;
end;
End;
Можно написать только одну строчку, последнюю, остальное это мое.

Ну и если интересно то вот моя процедура NextTrack:
Код:
procedure TForm1.NextTrack;
begin
if ListBox1.Items.Count > 0 then
  begin
  if N5.Checked then  //повторять одну
    begin
    AutoChoise;
    end;
  if N6.Checked then  //повторять все
    begin
    if ListBox1.Items.IndexOf(PlayItem) = ListBox1.Items.Count-1 then
    PlayItem:=ListBox1.Items[0] else
    PlayItem:=ListBox1.Items[ListBox1.Items.IndexOf(PlayItem)+1];
    AutoChoise;
    end;
  if N7.Checked then  //в случайном порядке
    begin
    Randomize;
    PlayItem:=ListBox1.Items[Random(ListBox1.Items.Count)];
    AutoChoise;
    end;
  if N8.Checked then  //отключить повтор
    begin
    end;
  end;
end;
Да и насчет этого:
Цитата:
Да нет на форуме про листбокс! НЕТ! есть одна тема где тоже отсылают в поиск
есть там все, нужно было лучше искать, я ж нашел или вы думаете я это все сам писал? Увы и жаль но нет, я лиш исправлял, добавлял, переделывал под себя
А вот здесь и обсуждается эта тема - Ease Player
Мой скромненький сайт

Последний раз редактировалось Vladya; 07.06.2009 в 01:46.
Vladya вне форума Ответить с цитированием
Старый 08.06.2009, 08:13   #9
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Если это всё самому лень писать то в наборе компонентов JEDI есть компонент PlayList. он позволяет выполнить пункт 3 и не только (random, нумерация ....)

Последний раз редактировалось SERG1980; 08.06.2009 в 08:15.
SERG1980 вне форума Ответить с цитированием
Старый 08.06.2009, 13:24   #10
inndim
Пользователь
 
Регистрация: 08.06.2008
Сообщений: 74
По умолчанию

1. Насчёт вытаскивания имени исполнителя и названия песни и тд. воспользуйтесь библиотекой tags.dll с сайта un4seen.com
2. Мой вам совет забудьте про ListBox, а используйте лучше ListView он гораздо функциональней, в нём можно в одном столбце показывать название песни напрмиер взятое из тега, а в другом столбце хранить путь к этому файлу естественно не показывая пользователю.

p.s.
Я когда-то тоже пытался использовать ListBox, но потом сильно пожалел, и пришлось много что переделывать.
inndim вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Плейлист для плеера Stanislav Мультимедиа в Delphi 10 05.01.2011 12:59
как добавить в listbox файлы(пишу с помощью bassplayer)(Listbox+opendialog=play) blackstersl Общие вопросы Delphi 11 09.06.2010 13:23
Воспроизведение с помощью ListBox как это djon198360 Мультимедиа в Delphi 2 07.03.2009 12:10
как прокрутить ListBox с помощью TrackBar Dr.Badnezz Общие вопросы Delphi 4 06.01.2009 14:54
Mp3 плейлист Delphi AnToHa-KiLL Помощь студентам 2 13.07.2008 23:26