怎么在一个单机事件中,暂停和恢复暂停?
比如tton控件,单击播放的时候就暂停.并且要判断播放器是否在播放.

解决方案 »

  1.   

    以下代码只为演示依次点击Button 1-4 体会一下,然后看代码.
    关于MediaPlayer的状态, 注意一下本程序的状态栏
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, MPlayer, ComCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        MediaPlayer1: TMediaPlayer;
        Button2: TButton;
        Button3: TButton;
        StatusBar1: TStatusBar;
        Button4: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
      private
        { Private declarations }
        procedure MPMode;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.MPMode;
    var
      sMode: string;
    begin
      Case Self.MediaPlayer1.Mode of
        mpNotReady:  sMode := 'mpNotReady';
        mpStopped:  sMode := 'mpStopped';
        mpPlaying:  sMode := 'mpPlaying';
        mpRecording:  sMode := 'mpRecording';
        mpSeeking:  sMode := 'mpSeeking';
        mpPaused:  sMode := 'mpPaused';
        mpOpen:  sMode := 'mpOpen';
      end;
      Self.StatusBar1.Panels[0].Text := sMode;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      Self.MediaPlayer1.FileName := 'C:\WINDOWS\Media\Windows XP 启动.wav';
      Self.MediaPlayer1.Open;
      MPMode;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      Self.MediaPlayer1.Play;//播放
      MPMode;
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
      Self.MediaPlayer1.Stop;//暂停
      //Self.MediaPlayer1.Pause;//或者。
      MPMode;
    end;procedure TForm1.Button4Click(Sender: TObject);
    begin
      Self.MediaPlayer1.Play;//继续
      MPMode;
    end;end.
      

  2.   

    好象有个playstate参数,可以设1.2.3你查查看
      

  3.   

    playstate参数可以判断是播放还是未播放
      

  4.   

    楼主说的PlayState"参数"未找到.我用的是MediaPlayer.Mode属性to 楼主: 可将前面的MPMode过程放到一个interval为1的Timer里即时检测.
      

  5.   

    interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, MPlayer, ComCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        MediaPlayer1: TMediaPlayer;
        Button2: TButton;
        Button3: TButton;
        StatusBar1: TStatusBar;
        Button4: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
      private
        { Private declarations }
        procedure MPMode;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.MPMode;
    var
      sMode: string;
    begin
      Case Self.MediaPlayer1.Mode of
        mpNotReady:  sMode := 'mpNotReady';
        mpStopped:  sMode := 'mpStopped';
        mpPlaying:  sMode := 'mpPlaying';
        mpRecording:  sMode := 'mpRecording';
        mpSeeking:  sMode := 'mpSeeking';
        mpPaused:  sMode := 'mpPaused';
        mpOpen:  sMode := 'mpOpen';
      end;
      Self.StatusBar1.Panels[0].Text := sMode;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      Self.MediaPlayer1.FileName := 'C:\WINDOWS\Media\Windows XP 启动.wav';
      Self.MediaPlayer1.Open;
      MPMode;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      Self.MediaPlayer1.Play;//播放
      MPMode;
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
      Self.MediaPlayer1.Stop;//暂停
      //Self.MediaPlayer1.Pause;//或者。
      MPMode;
    end;procedure TForm1.Button4Click(Sender: TObject);
    begin
      Self.MediaPlayer1.Play;//继续
      MPMode;
    end;end.