0 / 0 / 0
Регистрация: 19.06.2016
Сообщений: 13
|
|||||||||||
1 | |||||||||||
Авто переключение с трека на трек при воспроизведении26.06.2016, 23:49. Показов 1192. Ответов 3
Метки нет (Все метки)
В этой программе всё работает. Но не могу сделать автоматическое переключение на следующий трек при воспроизведении. Может, подскажет кто-нибудь: какой нужен код для этого?
Я пытался делать так (процедура со 154 строчки) - программа компилируется, но переключения на следующий трек не происходит:
Ответа я не дождался. Но сам нашёл решение. Путём использования в компоненте Медиа плауэр обработчика событий OnNotify. Компонент проигрывателя у меня стандартный, из вкладки "System". Вот код полностью рабочей программы. Она может переключать воспроизведение с трека на трек нажатием кнопок (туда и обратно), а также воспроизводить треки поочерёдно, один за одним автоматически.
0
|
26.06.2016, 23:49 | |
Ответы с готовыми решениями:
3
Утилитка под андройд. Переключение режима "В самолете" при посадке в авто Как сделать переключение трека на нужный(как в VK) При постановки номера авто в общую таблицу графы переносить автоматически в забору с номером авто Описать базовый класс автомобиль и от него наследуются классы: грузовые авто, уборочные авто, спортивные авто |
0 / 0 / 0
Регистрация: 19.06.2016
Сообщений: 13
|
||||||
02.07.2016, 12:27 [ТС] | 2 | |||||
В вышестоящем коде, при использовании программы, есть всякие недочёты. Вот ниже код, где максимально исправлено то, что можно было исправить. В программе всё работает, но программа эта - только набросок, далёкий ещё от совершенства.
Для автоперехода с трека на трек при воспроизведении я использовал событие OnNotify в стандартном компоненте Media Player.
0
|
49 / 49 / 34
Регистрация: 16.02.2016
Сообщений: 277
|
|||||||||||
02.07.2016, 13:22 | 3 | ||||||||||
при переходе к началу следующей дорожке, можно использовать метод Next:
0
|
0 / 0 / 0
Регистрация: 19.06.2016
Сообщений: 13
|
|
10.04.2017, 22:17 [ТС] | 4 |
Вот ещё вариант - сделано в компиляторе "Борланд девелопер студия 2006". Сейчас в программе работает всё: и продвиг кадра (вперёд\назад), и переход следующий трек (и на предыдущий) по нажатию кнопки, и автопереход на следующий трек при воспроизведении. Для осуществления последнего обязательно надо использовать событие компонента media player "OnNotify". В процедуре OnNotify обратите внимание на написание кода между IF и THEN - именно в этом была загвоздка! А также правильно должен быть написан код для Timer (таймера).
Вот код теперешней (полностью рабочей) программы: Код
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, ExtCtrls, StdCtrls, MPlayer, ComCtrls; type TForm1 = class(TForm) ListBox1: TListBox; Panel1: TPanel; MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; OpenDialog1: TOpenDialog; MediaPlayer1: TMediaPlayer; N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; N6: TMenuItem; N7: TMenuItem; N8: TMenuItem; N9: TMenuItem; N10: TMenuItem; N11: TMenuItem; Timer1: TTimer; TrackBar1: TTrackBar; procedure MediaPlayer1Notify(Sender: TObject); procedure N2Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure N5Click(Sender: TObject); procedure N6Click(Sender: TObject); procedure N7Click(Sender: TObject); procedure Panel1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure N8Click(Sender: TObject); procedure N9Click(Sender: TObject); procedure N10Click(Sender: TObject); procedure N11Click(Sender: TObject); procedure Panel1DblClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; I: Integer; implementation {$R *.dfm} procedure TForm1.MediaPlayer1Notify(Sender: TObject); begin if MediaPlayer1.Position = TrackBar1.Max then begin ListBox1.ItemIndex := ListBox1.ItemIndex +1; MediaPlayer1.FileName:= ListBox1.Items.Strings[ListBox1.ItemIndex]; MediaPlayer1.Open(); MediaPlayer1.Play(); end; end; procedure TForm1.N10Click(Sender: TObject); begin ListBox1.ItemIndex:= ListBox1.ItemIndex +1; MediaPlayer1.FileName:= ListBox1.Items.Strings[ListBox1.ItemIndex]; MediaPlayer1.Open(); MediaPlayer1.Play(); end; procedure TForm1.N11Click(Sender: TObject); begin ListBox1.ItemIndex:= ListBox1.ItemIndex -1; MediaPlayer1.FileName:= ListBox1.Items.Strings[ListBox1.ItemIndex]; MediaPlayer1.Open(); MediaPlayer1.Play(); end; procedure TForm1.N2Click(Sender: TObject); begin OpenDialog1.Execute(); begin for I:= 0 to OpenDialog1.Files.Count - 1 do begin MediaPlayer1.FileName:= OpenDialog1.FileName; MediaPlayer1.Open(); ListBox1.Items.Add(ExtractFileName(OpenDialog1.Files[i])); TrackBar1.Min:= 0; TrackBar1.Max:= 100; end; end; end; procedure TForm1.N3Click(Sender: TObject); begin ListBox1.Clear; end; procedure TForm1.N5Click(Sender: TObject); begin MediaPlayer1.Open(); MediaPlayer1.Play(); end; procedure TForm1.N6Click(Sender: TObject); begin MediaPlayer1.Pause(); end; procedure TForm1.N7Click(Sender: TObject); begin MediaPlayer1.Stop(); MediaPlayer1.Position:= 0; end; procedure TForm1.N8Click(Sender: TObject); begin MediaPlayer1.Step; MediaPlayer1.Position:= TrackBar1.Position +20000; MediaPlayer1.Play(); end; procedure TForm1.N9Click(Sender: TObject); begin MediaPlayer1.Back; MediaPlayer1.Position:= TrackBar1.Position -20000; MediaPlayer1.Play(); end; procedure TForm1.Panel1Click(Sender: TObject); begin MediaPlayer1.DisplayRect:= Rect(0,0,0,0); end; procedure TForm1.Panel1DblClick(Sender: TObject); begin MediaPlayer1.DisplayRect:= Panel1.ClientRect; end; procedure TForm1.Timer1Timer(Sender: TObject); begin if MediaPlayer1.FileName <>'' then begin TrackBar1.Max:= MediaPlayer1.Length; TrackBar1.Position:= MediaPlayer1.Position; end; end; end. Добавлено через 10 часов 22 минуты Подсказали мне в другом месте: как сделать автоостановку. Вот правильный код: Код
procedure TForm1.MediaPlayer1Notify(Sender: TObject); begin if MediaPlayer1.Position = TrackBar1.Max then begin if ListBox1.ItemIndex = ListBox1.Items.Count -1 then begin MediaPlayer1.Stop; ShowMessage('Это был последний файл'); exit; end; begin ListBox1.ItemIndex := ListBox1.ItemIndex +1; MediaPlayer1.FileName:= ListBox1.Items.Strings[ListBox1.ItemIndex]; MediaPlayer1.Open(); MediaPlayer1.Play(); end; end; end;
0
|
10.04.2017, 22:17 | |
10.04.2017, 22:17 | |
Помогаю со студенческими работами здесь
4
Почему при нажатии кнопки start не проигрывается трек? При воспроизведении видео нету изображения, при этом звук есть Время от времени заикается звук при воспроизведении через интернет видео, аудио и даже при общении в скайпе Шумы при воспроизведении музыки. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |