Урок 44 - Пишем MediaPlayer, часть(4/7)
Продолжаем насиловать библиотеку Bass и этом уроке мы поработаем над интерфейсом и добавим плей-лист.
Для начала изменим интерфейс, для этого вытащим 3 компонента TPanel, сразу свойство Caption
у них очищаем, у первой и второй панели свойство Align выставляем на alTop,а третью пока не трогаем. Теперь
выделяем все 4 кнопки, кликаем правой кнопкой мыши и в открывшемся контекстном меню выбираем Edit->Cut, выделяем первую
панель и опять же кликаем правой кнопкой мыши: Edit->Paste. Таким образом мы переместили кнопки внутрь первой панели, также
нужно сделать и с остальными компонентами, у вас должно получится вот так:
Далее добавим еще один TScrollBar на вторую панель, это будет громкость воспроизводимого звука. Свойство Align у третьей панели сделаем alClient и панель займет все свободное место, в нее мы добавим 2 компонента TListBox вот таким образом:
В первом ListBox'е будут только имена файлов, а второй будет скрыт от пользователя, в нем будут полные пути до этих файлов, это сделано для удобства и понимания. Также добавим 2 кнопки в оставшееся свободно место под плей-листом:
Ну все с визуальным оформлением закончили теперь дело за кодом. Первое что нам надо сделать, это процедуру добавления треков в плей-лист. После ключевого слова private объявим процедуру:
private { Private declarations } procedure AddFiles(filename: string);Нажимаем комбинацию клавиш Ctrl+Shift+C и в готовом шаблоне пишем код:
procedure TForm1.AddFiles(filename: string); begin ListBox2.Items.Add(FileName); // Добавляем путь до файла во 2 лист ListBox1.Items.Add(ExtractFilename(fileName)); // Добавляем имя файла в 1 лист if ListBox1.ItemIndex=-1 then // Если мы добавляем первый файл то ListBox1.ItemIndex:=Listbox1.Items.Count-1; // устанавливаем фокус на последний элемент end;Процедура готова, её нужно откуда-то вызывать, делать мы это будет при нажатии на кнопку "+", создаем обработчик OnClick:
procedure TForm1.AddFiles(filename: string); begin if OpenDialog1.Execute = false then exit; // Если файл не выбран то выходим AddFiles(OpenDialog1.FileName); // Вызываем нашу процедуру добавления файла и передаем туда путь end;
Вот как это работает.
Теперь нужно также написать процедуру проигрывания выбранного файла. Также после ключевого слова private пишем:
private { Private declarations } procedure AddFiles(filename: string); procedure PlayItem(item: integer); // Вот онаНажимаем волшебную комбинацию и пишем в создавшемся шаблоне:
if item < 0 then exit; // Если выбран несуществующий элемент то выходим if stream <> 0 then // Если поток уже существует то освобождаем его Bass_StreamFree(stream); // чтобы не было наложения звуков stream:= Bass_streamCreateFile(false, PChar(ListBox2.Items.Strings[item]),0,0,0); // Открываем файл if stream = 0 then // Если файл не загрузился ShowMessage('Ошибка файл не загружен!') // Выводим ошибку else begin Panel1.Caption:=ExtractFileName(OpenDialog1.FileName); // Выводим имя файла ScrollBar1.Min:=0; // Устанавливаем минимальную позицию ScrollBar1.Max:=Bass_ChannelGetLength(stream,0)-1; // Максимальную ScrollBar1.Position:=0; // Обнуляем ScrollBar Bass_ChannelPlay(stream, false); // Играем трек end;Теперь старый обработчик события OnClick на кнопке "Играть" можно удалить и заменить на этот:
if Bass_ChannelisActive(stream)= Bass_Active_Paused then // Если поток в состоянии паузы то BASS_channelPlay(stream,false) // Продолжаем играть else // Иначе PlayItem(ListBox1.ItemIndex); //Играем файл заногоНу вот и все, в следующем уроке мы научимся удалять файлы, изменять громкость и другое.
Удачи!
Встретимся в следующем уроке!
Добавил(а): amok-dima | Дата: 2014-11-24 | |
Процедура готова, её нужно откуда-то вызывать, делать мы это будет при нажатии на кнопку "+", создаем обработчик OnClick:
procedure TForm1.AddFiles(filename: string);
begin
if OpenDialog1.Execute = false then exit; // Если файл не выбран то выходим
AddFiles(OpenDialog1.FileName); // Вызываем нашу процедуру добавления файла и передаем туда путь
end;
Здесь не большая ошибка, процедура уже будет называться не AddFiles а TForm1.Button5.Clikc, и думаю что нужно исправить код и в первой кнопке с надписью "Открыть", так как при нажатие данной кнопки, названия трека будет передаваться на Panel1, но при этом при нажатие кнопки "Играть" ничего не происходит.
|
-
how to make Delphi player bass.dll, the listbox application load the tags by itself when I play a song