Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.10.2008, 14:54
Roman_s Roman_s вне форума
Прохожий
 
Регистрация: 03.10.2008
Сообщения: 28
Репутация: 10
Вопрос Mediaplayer

Делаю плеер, хочу чтобы песни автоматически переключались(а у меня когда песня кончается следующую приходится включать самому), и чтобы после окончания плейлиста он включался заново !!!
Заранее всем спасибо !!!
__________________
CODDING - Штука тонкая !!!
Ответить с цитированием
  #2  
Старый 21.10.2008, 14:59
Аватар для Blackster
Blackster Blackster вне форума
Новичок
 
Регистрация: 07.09.2008
Сообщения: 55
Репутация: 10
По умолчанию

а как код пишешь?
Ответить с цитированием
  #3  
Старый 21.10.2008, 15:22
Roman_s Roman_s вне форума
Прохожий
 
Регистрация: 03.10.2008
Сообщения: 28
Репутация: 10
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, MPlayer, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    MediaPlayer1: TMediaPlayer;
    OpenDialog1: TOpenDialog;
    Label1: TLabel;
    ListBox1: TListBox;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Button6: TButton;
    Button7: TButton;
    Label8: TLabel;
    Button8: TButton;
    Button9: TButton;
    Label9: TLabel;
    Timer1: TTimer;
    Label10: TLabel;
    procedure Button4Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure ListBox1DblClick(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
      MousePos: TPoint; var Handled: Boolean);
    procedure FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
      MousePos: TPoint; var Handled: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
Type
TID3Tag = record
ID:string[3];
Titel:string[30];
Artist:string[30];
Album:string[30];
Year:string[4];
Comment:string[30];
Genre:byte;
end;
var
ID3Tag:TID3Tag;

procedure Lese_ID3Tag(Filename:string);
var Buffer:array[1..128] of char;
F:File;
begin
AssignFile(F, Filename);
Reset(F,1);
Seek(F,FileSize(F)-128);
BlockRead(F, Buffer, SizeOf(Buffer));
CloseFile(F);
with ID3Tag do begin
ID:=copy(Buffer,1,3);
Titel:=copy(Buffer,4,30);
Artist:=copy(Buffer,34,30);
Album:=copy(Buffer,64,30);
Year:=copy(Buffer,94,4);
Comment:=copy(Buffer,98,30);
Genre:=ord(Buffer[128]);
end;
end;
{$R *.dfm}

procedure TForm1.Button4Click(Sender: TObject);
begin
If opendialog1.Execute then
Mediaplayer1.FileName := (opendialog1.FileName);
Mediaplayer1.Open;
Label1.Caption := (Opendialog1.FileName);
ListBox1.Items := (Opendialog1.Files);
Listbox1.ItemIndex := 0;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Mediaplayer1.Pause;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Mediaplayer1.Stop;
Mediaplayer1.Previous;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Mediaplayer1.Play;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
if OpenDialog1.Execute then begin
 Lese_ID3Tag(OpenDialog1.FileName);
 Label2.Caption:=ID3Tag.Titel;
 Label3.Caption:=ID3Tag.Artist;
 Label4.Caption:=ID3Tag.Album;
 Label5.Caption:=ID3Tag.Year;
 Label6.Caption:=ID3Tag.Comment;
 Label7.Caption:=IntToStr(ID3Tag.Genre);
 end;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
MediaPlayer1.FileName := (String(ListBox1.Items[Listbox1.ItemIndex+1]));
Listbox1.ItemIndex := Listbox1.ItemIndex+1;
MediaPlayer1.Open;
Mediaplayer1.Play;
Label1.Caption := (String(ListBox1.Items[Listbox1.ItemIndex]));
end;



procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
MediaPlayer1.FileName := (String(ListBox1.Items[Listbox1.ItemIndex]));
MediaPlayer1.Open;
Mediaplayer1.Play;
Label1.Caption := (String(ListBox1.Items[Listbox1.ItemIndex]));
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
Mediaplayer1.Position := Mediaplayer1.Position+10000;
Mediaplayer1.Play;
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
If Mediaplayer1.Position < 10000 then Mediaplayer1.Previous else Mediaplayer1.Position := Mediaplayer1.Position -10000;
Mediaplayer1.Play;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
MediaPlayer1.FileName := (String(ListBox1.Items[Listbox1.ItemIndex-1]));
Listbox1.ItemIndex := Listbox1.ItemIndex-1;
MediaPlayer1.Open;
Mediaplayer1.Play;
Label1.Caption := (String(ListBox1.Items[Listbox1.ItemIndex]));
end;

procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
begin
Mediaplayer1.Position := Mediaplayer1.Position+10000;
Mediaplayer1.Play;
end;

procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
begin
If Mediaplayer1.Position < 10000 then Mediaplayer1.Previous else Mediaplayer1.Position := Mediaplayer1.Position -10000;
Mediaplayer1.Play;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Label11.Caption := IntToStr(Mediaplayer1.Position);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label9.Caption := DateToStr(Date);
Label10.Caption := TimeToStr(Time);
end;

end.
__________________
CODDING - Штука тонкая !!!
Ответить с цитированием
  #4  
Старый 21.10.2008, 16:31
Аватар для Blackster
Blackster Blackster вне форума
Новичок
 
Регистрация: 07.09.2008
Сообщения: 55
Репутация: 10
По умолчанию

сейчас я тоже пишу плеер вот таким кодом я пользуюсь:

Код:
//формируем список файлов
procedure TForm1.PlayList(Path:String);

 var
  SearchRec: TSearchRec;
  Ext: string;
begin
  ListBox1.Clear;
  if FindFirst(Path + '*.*', faAnyFile, SearchRec) = 0 then
    repeat
      Ext := LowerCase(ExtractFileExt(SearchRec.Name));
      if (Ext = '.mp3') or (Ext = '.wav')  or (Ext = '.avi') or (Ext = '.ogg') or (Ext = '.wav') or (Ext = '.mpg') or (Ext = '.mac') or (Ext = '.flac') or (Ext = '.wv') or (Ext = '.wm') or (Ext = '.tta') or (Ext = '.ofr') or (Ext = '.tak') or (Ext = '.mpc') or (Ext = '.wma') then
        ListBox1.Items.Add(SearchRec.Name);
    until FindNext(SearchRec) <> 0;
  FindClose(SearchRec);
end;

//воспроизвести композицию, название котрой выделено в списке
procedure TForm1.Play;
begin
 Label1.Caption := ListBox1.Items[ListBox1.ItemIndex];
 MediaPlayer1.FileName := cDir + '\' + ListBox1.Items[ListBox1.ItemIndex];
 try
  MediaPlayer1.Open;
 except
  on EMCIDeviceError do
   begin
    ShowMessage('Ошибка обращения к файлу');
    Exit;
   end;
  end;
 MediaPlayer1.Play;
 min := 0;
 sec := 0;
 Timer1.Enabled := True;
 SpeedButton1.Caption := 'Стоп';
  Label3.Caption := ListBox1.Items[ListBox1.ItemIndex];
 MediaPlayer1.FileName := cDir + '\' + ListBox1.Items[ListBox1.ItemIndex];

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
{ GetDir(0,cDir); //каталог с программой
 PlayList('');
 ListBox1.ItemIndex := 0;
 Label1.Caption := ListBox1.Items[ListBox1.ItemIndex];}


end;

//щелчок по названию песни
procedure TForm1.ListBox1Click(Sender: TObject);
begin


end;

//щелчок по кнопке Играть
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
 if SpeedButton1.Caption = 'Играть' then
  begin
   Play;
   SpeedButton1.Caption := 'Стоп';
  end
 else
  begin
   SpeedButton1.Caption := 'Играть';
   MediaPlayer1.Stop;
   Timer1.Enabled := False;
  end;
end;

//сигнал от таймера
procedure TForm1.Timer1Timer(Sender: TObject);
Var s : String;
begin
   sTrackBar1.max:=MediaPlayer1.Length;
   sTrackBar1.Position:=MediaPlayer1.position;
//изменить счетчик времени
 if sec < 59
  then Inc(sec)
 else
  begin
   sec := 0;
   Inc(min);
  end;

//вывести время воспроизведения
 Label2.Caption := IntToStr(min) + ':';
 if sec < 10 then
  Label2.Caption := Label2.Caption + '0' + IntToStr(sec)
 else
Label2.Caption := Label2.Caption + IntToStr(sec);


//если воспроизведение текущей композиции не завершено
 if MediaPlayer1.Position < MediaPlayer1.Length
  then Exit;

//воспроизведение текущей композиции закончено
 Timer1.Enabled := False;
 MediaPlayer1.Stop;

 if ListBox1.ItemIndex < ListBox1.Count - 1 then
  begin
   ListBox1.ItemIndex := ListBox1.ItemIndex + 1;
   Play;
  end;

 if (ListBox1.ItemIndex = ListBox1.Count - 1) and sCheckBox1.Checked = True then
  begin
   ListBox1.ItemIndex := 0;
   Play;
  end;
  begin




end;
end;

procedure TForm1.ShellTreeView1Change(Sender: TObject; Node: TTreeNode);
begin
  cDir:=ShellTreeView1.Path+'/';
  PlayList(cDir);
  If ListBox1.Items.Count > 0 Then
  Begin
    ListBox1.ItemIndex := 0;
    Label1.Caption := ListBox1.Items[ListBox1.ItemIndex];
  End;
end;


а у меня вопрос до тебя: этот код с id3 tag работает?
Ответить с цитированием
  #5  
Старый 22.10.2008, 12:49
Roman_s Roman_s вне форума
Прохожий
 
Регистрация: 03.10.2008
Сообщения: 28
Репутация: 10
По умолчанию

Да, но (в моём коде) он работает с кнопки и opendialog`a , и показывает tag только первого выбранного файла !!!
__________________
CODDING - Штука тонкая !!!
Ответить с цитированием
  #6  
Старый 24.10.2008, 14:01
Roman_s Roman_s вне форума
Прохожий
 
Регистрация: 03.10.2008
Сообщения: 28
Репутация: 10
По умолчанию

И ещё:
КТО НИБУДЬ ЗНАЕТ КАК ЗАПРЕТИТЬ ОДИНОЧНОЕ НАЖАТИЕ МЫШИ НА ЛИСТБОКСЕ ???
__________________
CODDING - Штука тонкая !!!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:53.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter