用 delphi 做媒体播放器时,遇到一个问题,已经打开了一个*.avi 文件,再重新打开一个*.avi 时出错,不知为什么?具体代码如下:
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, MPlayer;type
  TForm1 = class(TForm)
    MediaPlayer1: TMediaPlayer;
    Panel1: TPanel;
    OpenButton: TButton;
    PlayButton: TButton;
    PauseButton: TButton;
    RewindButton: TButton;
    CloseBotton: TButton;
    OpenDialog1: TOpenDialog;
    procedure OpenButtonClick(Sender: TObject);
    procedure PlayButtonClick(Sender: TObject);
    procedure PauseButtonClick(Sender: TObject);
    procedure RewindButtonClick(Sender: TObject);
    procedure CloseBottonClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementationuses Types;{$R *.dfm}procedure TForm1.OpenButtonClick(Sender: TObject);
begin         
     if OpenDialog1.Execute then
     begin          
          MediaPlayer1.Close;
          MediaPlayer1.FileName:=OpenDialog1.FileName;
          MediaPlayer1.Open;
     if ExtractFileExt(OpenDialog1.FileName)='.avi' then
     begin
          MediaPlayer1.Display:=Panel1;
          MediaPlayer1.DisplayRect:=Rect(0,0,Panel1.Width,Panel1.Height);
     end;
     PlayButton.Enabled:=True;
     PauseButton.Enabled:=False;
     RewindButton.Enabled:=False;
     end;
end;procedure TForm1.PlayButtonClick(Sender: TObject);
begin
     if MediaPlayer1.Mode=mpPaused then
     begin
          MediaPlayer1.Resume;
     end
     else
     MediaPlayer1.Play;
     PlayButton.Enabled:=false;
     RewindButton.Enabled:=true;
     PauseButton.Enabled:=true;
end;procedure TForm1.PauseButtonClick(Sender: TObject);
begin
     MediaPlayer1.Pause;
     PlayButton.Enabled:=true;
     RewindButton.Enabled:=false;
     PauseButton.Enabled:=false;
end;procedure TForm1.RewindButtonClick(Sender: TObject);
begin
     MediaPlayer1.Rewind;
     MediaPlayer1.Play;
end;procedure TForm1.CloseBottonClick(Sender: TObject);
begin
     MediaPlayer1.Close;
     Close;
end;end.