| 
| 
 | Вопрос # 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) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |