我该怎么重复一首歌?

Cra*_*aig 2 delphi delphi-7

我有一个名为MediaPlayer1的TMediaPlayer然后打开一个文件(一首歌)我播放它.现在我的问题是我需要重复这首歌,直到程序停止.

这个想法是表单激活然后重复指定的歌曲,直到表单关闭.

MediaPlayer1.Filename := 'filename';
Run Code Online (Sandbox Code Playgroud)

然后打开它

MediaPlayer1.Open;
Run Code Online (Sandbox Code Playgroud)

然后它播放它

MediaPlayer1.Play;
Run Code Online (Sandbox Code Playgroud)

所以现在这首歌正在播放,但是当它结束时,我希望它再次播放(重复),然后再播放,直到表格结束.

我尝试过David Heffernan所说的但是它没有用,我想我做错了可以有人请求纠正我.

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    MediaPlayer1: TMediaPlayer;
    Label1: TLabel;
    procedure FormActivate(Sender: TObject);
    procedure MediaPlayer1Notify(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
begin
 mediaplayer1.FileName:='E:\it project\mario.mid';
 mediaplayer1.Open;
 mediaplayer1.AutoRewind:=true;
 mediaplayer1.Play;
 mediaplayer1.Notify:=true;
end;

procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
  if MediaPlayer1.NotifyValue=nvSuccessful then begin
    MediaPlayer1.Play;  
    MediaPlayer1.Notify := True;
  end;
end;
end.
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 6

你必须自己组织自动重复.

OnNotify为媒体播放器创建一个事件.歌曲完成后会激活.

procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
  if MediaPlayer1.NotifyValue=nvSuccessful then begin
    //restart the song
    MediaPlayer1.Play;  
    MediaPlayer1.Notify := True;//ensures we are notified when song completes
  end;
end;
Run Code Online (Sandbox Code Playgroud)

启动歌曲的代码需要如下所示:

MediaPlayer1.AutoRewind := True;//for obvious reasons
MediaPlayer1.Play;
MediaPlayer1.Notify := True;//ensures we are notified when song completes
Run Code Online (Sandbox Code Playgroud)