Урок 42 - Пишем MediaPlayer, часть(2/7)

  В этом уроке мы поработаем над интерфейсом, добавим кнопки "Стоп", "Пауза" и т.д.

   Первое что мы добавим, это возможность выбора воспроизводимого файла, для этого вытащим на форму из предыдущего урока компонент TOpenDialog и дополним обработчик события OnClick у кнопки "Открыть":

procedure TForm1.Button1Click(Sender: TObject);
begin
	if OpenDialog1.Execute = false then exit; // Если файл не выбран то выходим из процедуры
	if Stream <> 0 then        // Если поток уже существует то освобождаем его
		BASS_StreamFree(Stream); // чтобы не было наложения звуков
	
	stream:= Bass_streamCreateFile(false, PChar(OpenDialog1.FileName),0,0,0); // Открываем файл
	
	if Stream = 0 then  // Если файл не загрузился
		ShowMessage('Ошибка файл не загружен!'); // Выводим ошибку
end;
   Диалог сделали, теперь кнопочки. Вытаскиваем 2 кнопки и называем их: "Пауза", "Стоп", соответственно. Разместим их как на рисунке:

Внешний вид


   В OnClick на первой кнопке пишем код:
procedure TForm1.Button3Click(Sender: TObject);
begin
  BASS_ChannelPause(stream); // Ставим на паузу
   И сразу напишем во второй:
procedure TForm1.Button4Click(Sender: TObject);
begin
	BASS_ChannelStop(stream); // Останавливаем воспроизведение
    BASS_CHANNELsetPosition(stream,0,0); // Возвращаем текущую позицию в начало
   Можно проверять, все должно работать как часы. Все готово, но не хватает немного информации о том, что играет, ограничимся выводом названия файла. Вытаскиваем Panel:

Внешний вид


   И допишем обработчик события OnClick на кнопке "Открыть":
procedure TForm1.Button1Click(Sender: TObject);
begin
...
	
	if Stream = 0 then  // Если файл не загрузился
		ShowMessage('Ошибка файл не загружен!') // Выводим ошибку
	else
		Panel1.Caption:= ExtractFileName(OpenDialog1.FileName); // Выводим имя файла
end;
   Вот что получилось, можете смело экспериментировать :)

Удачи!
Встретимся в следующем уроке!




Добавил(а): Mikhail Дата: 2013-06-02
if Stream <> nil then выдает ошибку



Добавил(а): Mikhail Дата: 2013-06-02
[Error] Unit1.pas(51) [Error] Unit1.pas(54) что не правильно сделано ???



Добавил(а): Admin Дата: 2013-06-02
Прошу прощения, не проверил в Delphi "if Stream <> nil then" исправь на "if Stream = 0 then"



Добавил(а): Gerfegest Дата: 2014-12-04
Писал на Delphi XE6, постоянно выскакивала ошибка загрузки файла, проблема решилась после добавления в Stream BASS_UNICODE. Stream:= Bass_streamCreateFile(false, PChar(OpenDialog1.FileName),0,0,0 or BASS_UNICODE);



Добавил(а): olegyt Дата: 2015-08-02



Добавил(а): olegyt Дата: 2015-08-02



Добавил(а): olegyt Дата: 2015-08-02


    No results found.
Отменить.