delphi中WindowsMediaPlayer1StatusChange在这个事件中判断

procedureTForm7.WindowsMediaPlayer1StatusChange(Sender:TObject);beginifWindowsMediaPl... procedure TForm7.WindowsMediaPlayer1StatusChange(Sender: TObject);
begin
if WindowsMediaPlayer1.playState=8 then begin///当前视频播完了.
if i>1 then begin
i:=i-1;/////一共有多少个AVI
WindowsMediaPlayer1.URL:=ExtractFilePath(Paramstr(0))+'大屏滚动播放视频\'+Tmpmemo.Strings[i];
WindowsMediaPlayer1.controls.play;///这里播第二个avi
end else begin
close;////如果i里没有avi了.就关闭这个win
end;
end;
end;

现在的问题只能播第一个,第二个不能播啊...
展开
 我来答
sirouszlh
2013-01-28 · TA获得超过1651个赞
知道小有建树答主
回答量:1038
采纳率:100%
帮助的人:672万
展开全部
i:=Tmpmemo.Lines.Count; 是吧

那你初次执行的话
肯定只能是
WindowsMediaPlayer1.URL:=ExtractFilePath(Paramstr(0))+'大屏滚动播放视频\'+Tmpmemo.Strings[i-1]; //只能是 i-1 是吧? 因为是I的话 就超出范围了

假如一开始 I 为 10
第一次就播放 Tmpmemo.Strings[9]

而第二次
你是I=I-1, 还是播放Tmpmemo.Strings[9];

修改办法是 第一次 播放以后 I减1;
然后
if i>1 then begin 改成 if i>0 then begin
更多追问追答
追问
第一个播完 第二是黑屏不能自动播.我用鼠标点播放才行.
WindowsMediaPlayer1.URL:=222
WindowsMediaPlayer1.controls.play;
这两个在一起不能自动播吗
追答
我测试了一下 的确不行

不过不放在 WindowsMediaPlayer1StatusChange 事件里就可以播放
估计是bug

比如说设置个全局变量 isOpen :integer;
加一个定时器 Timer
在定时器里执行

if isopen=1 then begin
if i>0 then begin
WindowsMediaPlayer1.controls.stop;
WindowsMediaPlayer1.URL:=Tmpmemo.Lines.Strings[i-1];
WindowsMediaPlayer1.controls.play;
open:=0;
end else begin

end;
end;

在 WindowsMediaPlayer1StatusChange 事件里 写
if WindowsMediaPlayer1.playState=8 then begin
open:=1;
end;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式