Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 19.06.2016
Сообщений: 13
1

Авто переключение с трека на трек при воспроизведении

26.06.2016, 23:49. Показов 1192. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В этой программе всё работает. Но не могу сделать автоматическое переключение на следующий трек при воспроизведении. Может, подскажет кто-нибудь: какой нужен код для этого?

Я пытался делать так (процедура со 154 строчки) - программа компилируется, но переключения на следующий трек не происходит:


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.MPlayer, Vcl.StdCtrls, Vcl.Menus,
  Vcl.ExtCtrls, Vcl.ComCtrls;
 
type
  TForm1 = class(TForm)
    MediaPlayer1: TMediaPlayer;
    ListBox1: TListBox;
    OpenDialog1: TOpenDialog;
    MainMenu1: TMainMenu;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    Panel1: TPanel;
    N15: TMenuItem;
    N16: TMenuItem;
    N17: TMenuItem;
    Timer1: TTimer;
    TrackBar1: TTrackBar;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure N10Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure N12Click(Sender: TObject);
    procedure N13Click(Sender: TObject);
    procedure Panel1Click(Sender: TObject);
    procedure N17Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  SL: TStringList;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.N10Click(Sender: TObject);
begin
MediaPlayer1.Stop;
end;
 
procedure TForm1.N12Click(Sender: TObject);
begin
ListBox1.ItemIndex:=ListBox1.ItemIndex+1;
MediaPlayer1.FileName:=SL.Strings[ListBox1.ItemIndex];
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
 
procedure TForm1.N13Click(Sender: TObject);
begin
ListBox1.ItemIndex:=ListBox1.ItemIndex-1;
MediaPlayer1.FileName:=SL.Strings[ListBox1.ItemIndex];
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
 
procedure TForm1.N17Click(Sender: TObject);
begin
Self.RecreateWnd;
end;
 
procedure TForm1.N3Click(Sender: TObject);
Var
 I: Integer;
begin
 IF OpenDialog1.Execute Then
  Begin
   For I:=0 to OpenDialog1.Files.Count -1 do
    Begin
     SL.Add(OpenDialog1.Files[I]);
     ListBox1.Items.Add(ExtractFileName(OpenDialog1.Files[I]));
     TrackBar1.min:=0;
     TrackBar1.max:=100;
    End;
    End;
end;
 
procedure TForm1.N4Click(Sender: TObject);
begin
SL.Delete(ListBox1.ItemIndex);
ListBox1.Items.Delete(ListBox1.ItemIndex);
end;
 
procedure TForm1.N5Click(Sender: TObject);
begin
ListBox1.Clear;
end;
 
procedure TForm1.N7Click(Sender: TObject);
begin
Self.Close;
end;
 
procedure TForm1.N8Click(Sender: TObject);
begin
MediaPlayer1.FileName:=SL.Strings[ListBox1.ItemIndex];
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
 
procedure TForm1.N9Click(Sender: TObject);
begin
MediaPlayer1.Pause;
end;
 
procedure TForm1.Panel1Click(Sender: TObject);
begin
MediaPlayer1.DisplayRect:=Rect(0,0,600,609);
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if mediaplayer1.FileName<>'' then
trackbar1.position:=round(mediaplayer1.position*trackbar1.max/mediaplayer1.length);
end;
 
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
If TrackBar1.Position<>mediaplayer1.Position then
mediaplayer1.position:=round(trackbar1.position*mediaplayer1.length/trackbar1.max);
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
SL:=TStringList.Create;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
SL.Free;
end;
 
procedure TForm1.ListBox1Click(Sender: TObject);
begin
if TrackBar1.Position > 99 then
ListBox1.ItemIndex := ListBox1.ItemIndex + 1;
MediaPlayer1.FileName:=SL.Strings[ListBox1.ItemIndex];
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
 
end.
Добавлено через 22 часа 40 минут
Ответа я не дождался. Но сам нашёл решение. Путём использования в компоненте Медиа плауэр обработчика событий OnNotify. Компонент проигрывателя у меня стандартный, из вкладки "System".

Вот код полностью рабочей программы. Она может переключать воспроизведение с трека на трек нажатием кнопок (туда и обратно), а также воспроизводить треки поочерёдно, один за одним автоматически.


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.MPlayer, Vcl.StdCtrls, Vcl.Menus,
  Vcl.ExtCtrls, Vcl.ComCtrls;
 
type
  TForm1 = class(TForm)
    MediaPlayer1: TMediaPlayer;
    ListBox1: TListBox;
    OpenDialog1: TOpenDialog;
    MainMenu1: TMainMenu;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    Panel1: TPanel;
    N15: TMenuItem;
    N16: TMenuItem;
    N17: TMenuItem;
    Timer1: TTimer;
    TrackBar1: TTrackBar;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure N10Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure N12Click(Sender: TObject);
    procedure N13Click(Sender: TObject);
    procedure Panel1Click(Sender: TObject);
    procedure N17Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
    procedure MediaPlayer1Notify(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  SL: TStringList;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.N10Click(Sender: TObject);
begin
MediaPlayer1.Stop;
Self.RecreateWnd;
end;
 
procedure TForm1.N12Click(Sender: TObject);
begin
ListBox1.ItemIndex:=ListBox1.ItemIndex+1;
MediaPlayer1.FileName:=SL.Strings[ListBox1.ItemIndex];
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
 
procedure TForm1.N13Click(Sender: TObject);
begin
ListBox1.ItemIndex:=ListBox1.ItemIndex-1;
MediaPlayer1.FileName:=SL.Strings[ListBox1.ItemIndex];
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
 
procedure TForm1.N17Click(Sender: TObject);
begin
Self.RecreateWnd;
end;
 
procedure TForm1.N3Click(Sender: TObject);
Var
 I: Integer;
begin
 IF OpenDialog1.Execute Then
  Begin
   For I:=0 to OpenDialog1.Files.Count -1 do
    Begin
     SL.Add(OpenDialog1.Files[I]);
     ListBox1.Items.Add(ExtractFileName(OpenDialog1.Files[I]));
     TrackBar1.min:=0;
     TrackBar1.max:=100;
    End;
    End;
end;
 
procedure TForm1.N4Click(Sender: TObject);
begin
SL.Delete(ListBox1.ItemIndex);
ListBox1.Items.Delete(ListBox1.ItemIndex);
end;
 
procedure TForm1.N5Click(Sender: TObject);
begin
ListBox1.Clear;
end;
 
procedure TForm1.N7Click(Sender: TObject);
begin
Self.Close;
end;
 
procedure TForm1.N8Click(Sender: TObject);
begin
MediaPlayer1.FileName:=SL.Strings[ListBox1.ItemIndex];
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
 
procedure TForm1.N9Click(Sender: TObject);
begin
MediaPlayer1.Pause;
Self.RecreateWnd;
end;
 
procedure TForm1.Panel1Click(Sender: TObject);
begin
MediaPlayer1.DisplayRect:=Rect(0,0,600,609);
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if mediaplayer1.FileName<>'' then
trackbar1.position:=round(mediaplayer1.position*trackbar1.max/mediaplayer1.length);
end;
 
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
If TrackBar1.Position<>mediaplayer1.Position then
mediaplayer1.position:=round(trackbar1.position*mediaplayer1.length/trackbar1.max);
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
SL:=TStringList.Create;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
SL.Free;
end;
 
procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
 with MediaPlayer1 do
 if TrackBar1.Position = 100 then
 ListBox1.ItemIndex := ListBox1.ItemIndex +1;
 MediaPlayer1.FileName:=SL.Strings[ListBox1.ItemIndex];
 MediaPlayer1.Open;
 MediaPlayer1.Play;
end;
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.06.2016, 23:49
Ответы с готовыми решениями:

Утилитка под андройд. Переключение режима "В самолете" при посадке в авто
Доброго времени суток. Заранее прошу простить, если тема не в том разделе. Я честно, искал,...

Как сделать переключение трека на нужный(как в VK)
Здрасте всем. такая трабла, скачал MJU-плеер(надеюсь все знают). Там в коде есть &quot;пример Пульта...

При постановки номера авто в общую таблицу графы переносить автоматически в забору с номером авто
Всем привет. Возникла такая ситуация, есть таблица учета расходов по организации. В которую...

Описать базовый класс автомобиль и от него наследуются классы: грузовые авто, уборочные авто, спортивные авто
Всем привет!:) хочу спросить кто нибудь писал программы с наследованием на С++? Интересны задачи...

3
0 / 0 / 0
Регистрация: 19.06.2016
Сообщений: 13
02.07.2016, 12:27  [ТС] 2
В вышестоящем коде, при использовании программы, есть всякие недочёты. Вот ниже код, где максимально исправлено то, что можно было исправить. В программе всё работает, но программа эта - только набросок, далёкий ещё от совершенства.

Для автоперехода с трека на трек при воспроизведении я использовал событие OnNotify в стандартном компоненте Media Player.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.MPlayer, Vcl.StdCtrls, Vcl.Menus,
  Vcl.ExtCtrls, Vcl.ComCtrls;
 
type
  TForm1 = class(TForm)
    MediaPlayer1: TMediaPlayer;
    ListBox1: TListBox;
    OpenDialog1: TOpenDialog;
    MainMenu1: TMainMenu;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    Panel1: TPanel;
    N15: TMenuItem;
    N16: TMenuItem;
    N17: TMenuItem;
    Timer1: TTimer;
    TrackBar1: TTrackBar;
    N14: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure N10Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure N12Click(Sender: TObject);
    procedure N13Click(Sender: TObject);
    procedure Panel1Click(Sender: TObject);
    procedure N17Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
    procedure MediaPlayer1Notify(Sender: TObject);
    procedure N14Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  SL: TStringList;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.N10Click(Sender: TObject); \\стоп воспроизведения
begin
MediaPlayer1.Stop;
end;
 
procedure TForm1.N12Click(Sender: TObject); \\кнопка "вперёд"
begin
ListBox1.ItemIndex:=ListBox1.ItemIndex+1;
MediaPlayer1.FileName:=SL.Strings[ListBox1.ItemIndex];
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
 
procedure TForm1.N13Click(Sender: TObject); \\кнопка "назад"
begin
ListBox1.ItemIndex:=ListBox1.ItemIndex-1;
MediaPlayer1.FileName:=SL.Strings[ListBox1.ItemIndex];
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
 
procedure TForm1.N14Click(Sender: TObject); \\очистить видео с дисплея
begin
Self.RecreateWnd;
end;
 
procedure TForm1.N17Click(Sender: TObject); \\перезагрузить
begin
Self.RecreateWnd;
SL.Clear;
end;
 
procedure TForm1.N3Click(Sender: TObject); \\открыть файл (файлы)
Var
 I: Integer;
begin
 IF OpenDialog1.Execute Then
  Begin
   For I:=0 to OpenDialog1.Files.Count -1 do
    Begin
     SL.Add(OpenDialog1.Files[I]);
     ListBox1.Items.Add(ExtractFileName(OpenDialog1.Files[I]));
     TrackBar1.min:=0; \\настройка трек бара для отображения шкалы воспроизведения
     TrackBar1.max:=100;
    End;
    End;
end;
 
procedure TForm1.N4Click(Sender: TObject); \\удалить выбранное с плей-листа
begin
SL.Delete(ListBox1.ItemIndex);
ListBox1.Items.Delete(ListBox1.ItemIndex);
end;
 
procedure TForm1.N5Click(Sender: TObject); \\очистить плей-лист
begin
ListBox1.Clear;
end;
 
procedure TForm1.N7Click(Sender: TObject); \\выйти из программы
begin
Self.Close;
end;
 
procedure TForm1.N8Click(Sender: TObject); \\пуск воспроизведения
begin
MediaPlayer1.FileName:=SL.Strings[ListBox1.ItemIndex];
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
 
procedure TForm1.N9Click(Sender: TObject); \\пауза воспроизведения
begin
MediaPlayer1.Pause;
end;
 
procedure TForm1.Panel1Click(Sender: TObject); \\дисплей для показа видео
begin
MediaPlayer1.DisplayRect:=Rect(0,0,600,609); \\размеры дисплея
end;
 
procedure TForm1.Timer1Timer(Sender: TObject); \\таймер воспроизведения
begin
if mediaplayer1.FileName<>'' then
trackbar1.position:=round(mediaplayer1.position*trackbar1.max/mediaplayer1.length);
end;
 
procedure TForm1.TrackBar1Change(Sender: TObject); \\трек бар воспроизведения
begin
If TrackBar1.Position<>mediaplayer1.Position then
mediaplayer1.position:=round(trackbar1.position*mediaplayer1.length/trackbar1.max);
end;
 
procedure TForm1.FormCreate(Sender: TObject); \\создание формы
begin
SL:=TStringList.Create;
end;
 
procedure TForm1.FormDestroy(Sender: TObject); \\уничтожение формы
begin
SL.Free;
end;
 
procedure TForm1.MediaPlayer1Notify(Sender: TObject); \\автопереход на следующий трек
begin
 with MediaPlayer1 do
 if TrackBar1.Position = 100 then
 begin
 ListBox1.ItemIndex := ListBox1.ItemIndex +1;
 MediaPlayer1.FileName:=SL.Strings[ListBox1.ItemIndex];
 MediaPlayer1.Open;
 MediaPlayer1.Play;
 end
 else
 begin
 ListBox1.ItemIndex := ListBox1.ItemIndex;
 end;
end;
 
end.
0
49 / 49 / 34
Регистрация: 16.02.2016
Сообщений: 277
02.07.2016, 13:22 3
при переходе к началу следующей дорожке, можно использовать метод Next:
Delphi
1
  MediaPlayer1.Next;
при выходе из программы, желательно закрыть устройство MCI:
Delphi
1
  MediaPlayer1.Close;
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;
А я делал ошибку, что пытался писать mediaplayer1.stop в конце процедуры (после инструкции перехода на следующий трек), а не в начале.
0
10.04.2017, 22:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2017, 22:17
Помогаю со студенческими работами здесь

Почему при нажатии кнопки start не проигрывается трек?
package second; import javax.sound.midi.*; import javax.swing.*; import java.awt.*; import...

При воспроизведении видео нету изображения, при этом звук есть
Здравствуйте! При воспроизведении видео нету изображения, при этом звук есть. Видео работает в...

Время от времени заикается звук при воспроизведении через интернет видео, аудио и даже при общении в скайпе
Это происходит не часто, но регулярно. Компьютер новый, поэтому немного напрягает. Фризы звука...

Шумы при воспроизведении музыки.
Купил звуковую карту.Установил.При проигрывании музыки появляются шумы,тоесть сперва играет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru