|
Вопрос # 367/ вопрос решён / |
|
Здравствуйте. Я так и не понял насчет MediaPlayer1.
Вопрос был такой.
Как мне, скопировав в папку несколько песен (например, песен десять),
нажав на кнопку, они должны проигрываться по очереди (одна за другой).
Я сразу напишу, что я начинающий, поэтому не знаю как их
загрузить в ListBox1, (составив список песен), а потом
проигрывать их по очереди. Если можно то напишите
поподробнее. Заранее благодарен.
 |
Вопрос задал: Толков Геннадий Викторович (статус: Посетитель)
Вопрос отправлен: 2 марта 2007, 23:24
Состояние вопроса: решён, ответов: 3.
|
Ответ #1. Отвечает эксперт: Aymenel
Здравствуйте, Толков Геннадий Викторович!
Может вам стоит для начала написать что-нибудь
по проще и почитать литературку для начинающих. Потому что если вы не умеете работать со стандартными компонентами, то все наши советы в итоге сведутся к тому, что за вас кто-то напишет эту программу.
 |
Ответ отправил: Aymenel (статус: 2-ой класс)
Время отправки: 2 марта 2007, 23:36
Оценка за ответ: 3
|
Ответ #2. Отвечает эксперт: Роман
Здравствуйте, Толков Геннадий Викторович!Вот вам два примера.Первый выводит в ListBox все файлы каталога.Второй - Функция предоставляет Вам каждый раз новое имя файла,а если список файлов исчерпан, начинает перебор снова.Может пригодиться для последовательного воспроизведения файлов.
Приложение: Переключить в обычный режим- 1.===========================
- procedure ListFileDir(Path: string; FileList: TStrings);
- var
- SR: TSearchRec;
- begin
- if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then
- begin
- repeat
- if (SR.Attr <> faDirectory) then
- begin
- FileList.Add(SR.Name);
- end;
- until FindNext(SR) <> 0;
- FindClose(SR);
- end;
- end;
-
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- ListFileDir('C:WINDOWS', ListBox1.Items);
- end;
- ==================================
- 2.=============================
- function GetNextFileName(Path: string): string;
- const
- ListFileName = 'ListFile.lst';
- FileMask = '*.*' ;
- var
- SearchRec: TSearchRec;
- begin
- with TStringList.Create do
- begin
- if FileExists(ListFileName) then
- begin
- LoadFromFile(ListFileName);
- end;
- if FindFirst(IncludeTrailingBackslash(Path) + FileMask,
- faAnyFile and not faDirectory,
- SearchRec) = 0 then
- begin
- repeat
- Result := SearchRec.Name;
- if (FindNext(SearchRec) <> 0) then
- begin
- Clear;
- end;
- until (IndexOf(Result) = -1);
- Add(Result);
- FindClose(SearchRec);
- end
- else
- begin
- Result := '';
- end;
- SaveToFile(ListFileName);
- Free;
- end;
- end;
- procedure TForm1.Button1Click(Sender: TObject);
- begin
-
- end;
- ===================================
 |
Ответ отправил: Роман (статус: 5-ый класс)
Время отправки: 3 марта 2007, 00:34
Оценка за ответ: 5
|
Ответ #3. Отвечает эксперт: Дима Гусаков
Здравствуйте, Толков Геннадий Викторович!
Исходник в прикреплённом файле. К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)
Приложение: Переключить в обычный режим- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, Buttons, MPlayer, StdCtrls, ExtCtrls;
-
- type
- TForm1 = class(TForm)
- ListBox1: TListBox;
- MediaPlayer1: TMediaPlayer;
- SpeedButton1: TSpeedButton;
- Label1: TLabel;
- Label2: TLabel;
- Timer1: TTimer;
- CheckBox1: TCheckBox;
-
- procedure PlayList(Path:String);
- procedure Play;
- procedure FormCreate(Sender: TObject);
- procedure ListBox1Click(Sender: TObject);
- procedure SpeedButton1Click(Sender: TObject);
-
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
- cDir: String;
-
- implementation
-
- {$R *.dfm}
-
- procedure TForm1.PlayList(Path:String);
- var
- LpBuf: PChar;
- sWinDir: String;
-
-
-
- begin
- ListBox1.Clear;
-
- if FindFirst(Path + '*.mp3', faAnyFile, SearchRec) = 0 then
- begin
- ListBox1.Items.Add(SearchRec.Name);
- while (FindNext(SearchRec) = 0) do
- ListBox1.Items.Add(SearchRec.Name);
- end;
-
- 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
-
- Exit;
- end;
- end;
- MediaPlayer1.Play;
- min := 0;
- sec := 0;
- Timer1.Enabled := True;
-
- end;
-
- procedure TForm1.FormCreate(Sender: TObject);
- begin
-
- PlayList('');
- ListBox1.ItemIndex := 0;
- Label1.Caption := ListBox1.Items[ListBox1.ItemIndex];
- end;
-
-
- procedure TForm1.ListBox1Click(Sender: TObject);
- begin
- Label1.Caption := ListBox1.Items[ListBox1.ItemIndex];
- Play;
- end;
-
-
- procedure TForm1.SpeedButton1Click(Sender: TObject);
- begin
-
- begin
- Play;
-
- end
- else
- begin
-
- MediaPlayer1.Stop;
- Timer1.Enabled := False;
- end;
- end;
-
-
- procedure TForm1.Timer1Timer(Sender: TObject);
- begin
-
- 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 CheckBox1.Checked = True then
- begin
- ListBox1.ItemIndex := 0;
- Play;
- end;
- end;
-
- end.
 |
Ответ отправил: Дима Гусаков (статус: 2-ой класс)
Время отправки: 3 марта 2007, 09:23
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 1; последнее сообщение — 3 марта 2007, 01:08; участников в обсуждении: 1.
|
Роман (статус: 5-ый класс), 3 марта 2007, 01:08 [#1]:
P.S:а вот эта процедура будет последовательно ,по круга, воспроизводить файлы:
procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
with MediaPlayer1 do
if NotifyValue = nvSuccessful then
begin
button1click(sender);
end;
end;
В button1click - функция GetNextFileName(p).Теперь вам осталось только собрать всё до кучи...
|
31 января 2011, 19:58: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|