小弟我设置TMediaplayer的Notify := True;OnNotify := NotifyProc;并在NotifyProc中判断mode,为什么当文件播完却总是playing

我设置TMediaplayer的Notify := True;OnNotify := NotifyProc;并在NotifyProc中判断mode,为什么当文件播完却总是playing?
procedure   TForm1.FormCreate(Sender:   TObject);
begin
    MediaPlayer1.Notify   :=   True;
    MediaPlayer1.OnNotify   :=   NotifyProc;
end;

procedure   TForm1.NotifyProc(Sender:   TObject);
begin

    Case   (Sender   As   TMediaPlayer).Mode   of
        mpNotReady:
        begin
            Memo1.Lines.Add( 'mpNotReady ');
        end;
        mpStopped:
        begin
            Memo1.Lines.Add( 'mpStopped ');
        end;
        mpPlaying:
        begin
            Memo1.Lines.Add( 'mpPlaying ');
        end;
        mpRecording:
        begin
            Memo1.Lines.Add( 'mpRecording ');
        end;
        mpSeeking:
        begin
            Memo1.Lines.Add( 'mpSeeking ');
        end;
        mpPaused:
        begin
            Memo1.Lines.Add( 'mpPaused ');
        end;
        mpOpen:
        begin
            Memo1.Lines.Add( 'mpOpen ');
        end;
    end;

    (Sender   As   TMediaPlayer).Notify   :=   True;
end;

当文件播完了以后为什么显示mode是playing?

------解决方案--------------------
当TMediaPlayer的一个媒体控件方法(诸如Back、Close、Eject、Next、Open、Pause、PauseOnly、Play、Previouse、Resume、Rewind、StartRecordint、Step或Stop)执行完毕,就会触发OnNotify。我测试其Click事件及Notify,发现其发送的是执行完毕之前的Mode,并且如果是手动进行点击按钮的话,你会发现OnNotify不会按照我们想像的模式进行,有的时候返回的是两个状态,有的时候返回的是一个状态,但是如果按照里面代码的分析,是正确的。而如果将上面的代码添加到OnClick事件中,便会完全呈现发送的是执行完毕之前的Mode。
------解决方案--------------------
学习!
------解决方案--------------------
我觉得应该加一个判断,当其position=length的时候,让其自动的stop应该就可以了。你有没有发现realplay 和windows media player没有开始按钮的,只有开始和暂停共用的,而影音风暴是有的,我想应该是这样实现的。不行,查看源代码,看原因,然后自己写一个事件来完成。也可以利用定时器,真麻烦呀,感觉。