
Создать простой проигрыватель музыки в Delphi не так трудно как кажется. Для этого можно воспользоваться стандартным компонентом MediaPlayer с палитры компонентов System. Создадим проигрыватель который имеет: Плейлист и регулятор громкости.
Для начала кидаем на форму: MediaPlayer, ListBox, Button, OpenDialog, TrackBar.
Теперь сам пример:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MMSystem, StdCtrls, MPlayer, ComCtrls;
type
TForm1 = class(TForm)
Playlist: TListBox;
MediaPlayer: TMediaPlayer;
Open: TButton;
OpenDialog: TOpenDialog;
VolumeBar: TTrackBar;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure PlaylistDblClick(Sender: TObject);
procedure OpenClick(Sender: TObject);
procedure VolumeBarChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
SL: TStringList;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
SL := TStringList.Create;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
SL.Free;
end;
{ Воспроизводим музыку из плейлиста двойным нажатием по треку }
procedure TForm1.PlaylistDblClick(Sender: TObject);
begin
MediaPlayer.FileName := SL.Strings[Playlist.ItemIndex];
MediaPlayer.Open;
MediaPlayer.Play;
end;
{ Регулятор громкости проигрывателя }
procedure TForm1.VolumeBarChange(Sender: TObject);
var
Value: DWord;
begin
VolumeBar.Max := 65535;
Value := 65535 - VolumeBar.Position;
waveOutSetVolume(0, (Value SHL 16) + Value);
end;
{ Открываем музыкальные файлы и добавляем их в Плейлист }
procedure TForm1.OpenClick(Sender: TObject);
var
I: Integer;
begin
OpenDialog.Options := [ofHideReadOnly, ofAllowMultiSelect, ofEnableSizing];
if OpenDialog.Execute then
begin
for I := 0 to OpenDialog.Files.Count - 1 do
begin
SL.Add(OpenDialog.Files[I]);
Playlist.Items.Add(ExtractFileName(OpenDialog.Files[I]));
end;
end;
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MMSystem, StdCtrls, MPlayer, ComCtrls;
type
TForm1 = class(TForm)
Playlist: TListBox;
MediaPlayer: TMediaPlayer;
Open: TButton;
OpenDialog: TOpenDialog;
VolumeBar: TTrackBar;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure PlaylistDblClick(Sender: TObject);
procedure OpenClick(Sender: TObject);
procedure VolumeBarChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
SL: TStringList;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
SL := TStringList.Create;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
SL.Free;
end;
{ Воспроизводим музыку из плейлиста двойным нажатием по треку }
procedure TForm1.PlaylistDblClick(Sender: TObject);
begin
MediaPlayer.FileName := SL.Strings[Playlist.ItemIndex];
MediaPlayer.Open;
MediaPlayer.Play;
end;
{ Регулятор громкости проигрывателя }
procedure TForm1.VolumeBarChange(Sender: TObject);
var
Value: DWord;
begin
VolumeBar.Max := 65535;
Value := 65535 - VolumeBar.Position;
waveOutSetVolume(0, (Value SHL 16) + Value);
end;
{ Открываем музыкальные файлы и добавляем их в Плейлист }
procedure TForm1.OpenClick(Sender: TObject);
var
I: Integer;
begin
OpenDialog.Options := [ofHideReadOnly, ofAllowMultiSelect, ofEnableSizing];
if OpenDialog.Execute then
begin
for I := 0 to OpenDialog.Files.Count - 1 do
begin
SL.Add(OpenDialog.Files[I]);
Playlist.Items.Add(ExtractFileName(OpenDialog.Files[I]));
end;
end;
end;
end.
Этот проигрыватель с использованием компонента MediaPlayer можно усовершенствовать до бесконечности, например добавить сохранение плейлиста, включение и отключение случайного порядка проигрывания музыкальных треков и т.д.