各位老兄:帮忙看看这个简单的问题(有关于MediaPlayer),小女子感恩不尽!!!(100分)

  • 主题发起人 主题发起人 guangz
  • 开始时间 开始时间
G

guangz

Unregistered / Unconfirmed
GUEST, unregistred user!
一个按钮的事件的要求是这样的:
停止(返回本次播放的第一个文件的第一侦画面,保持静止)
以下事具体代码:
MediaPlayer1.DeviceType:=dtAutoSelect;
MediaPlayer1.Close;
mediaplayer1.FileName:='c:/media/1.avi';
mediaplayer1.Display:=form1;
mediaplayer1.open;
mediaplayer1.play;


MediaPlayer1.DisplayRect:=rect(0,0,form1.clientwidth,form1.clientheight)
mediaplayer1.pause;

为什么加上最后一句窗体上就什么都没有了,
如果把最后一句放在另一个按钮事件中,就可以暂停
后者吧这句去掉MediaPlayer1.DisplayRect:=rect(0,0,form1.clientwidth,form1.clientheight)
但是我要实现全屏幕就必须这样,
而我的要求怎么才能实现,请帮帮我,谢谢!
 
估计是程序执行太快了!都是 CPU 惹的祸!

把 暂停 放在别的按钮的事件中。
在form上放置一个 pancel(?) 作为显示的屏,即可实现全屏幕。
 
用panel更是不行,全屏幕我知道怎么实现,就是加上那句
MediaPlayer1.DisplayRect:=rect(0,0,form1.clientwidth,form1.clientheight
屏幕上就什么都不显示了,
问题怎么解决,
谢谢!
 
把这句
MediaPlayer1.DisplayRect:=rect(0,0,form1.clientwidth,form1.clientheight
放在前面可以不呀
 
MediaPlayer1.DisplayRect:=FORM1.ClientRect;
 
MediaPlayer1.DisplayRect:=FORM2.ClientRect;
 
这是因为窗口刷新没有重画造成的。正确的顺序是:
procedure TForm1.Button1Click(Sender: TObject);
begin

MediaPlayer1.DeviceType:=dtAutoSelect;
MediaPlayer1.Close;
mediaplayer1.FileName:='c:/media/1.avi';
mediaplayer1.Display:=form1;

MediaPlayer1.Open;
MediaPlayer1.DisplayRect := self.ClientRect;
end;

//窗口重画事件
procedure TForm1.FormPaint(Sender: TObject);
begin

if (MediaPlayer1.Mode > mpNotReady) and (MediaPlayer1.Mode <= mpOpen) then
begin

MediaPlayer1.Play;
MediaPlayer1.Rewind;
end;

end;


具体什么感谢办法啊:)
 
>>具体什么感谢办法啊:)
你想干吗?[:D][:D]
 
首先谢谢大家的热心,问题解决一定给分
pmlpml:你好,谢谢你,就是没有窗口重画的问题,但是加上
procedure TForm1.FormPaint(Sender: TObject);
begin

if (MediaPlayer1.Mode > mpNotReady) and (MediaPlayer1.Mode <= mpOpen) then
begin

MediaPlayer1.Play;
MediaPlayer1.Rewind;
end;

end;

之后
他(TForm1.MediaPlayer1Notify
)的事件下的这断代码去掉才可以,一下事这段代码,可是这样的话,就不能播放列表了,
何况还有别的命令(例如:play,pasue),这些命令就都实效了,怎么办???

if (MediaPlayer1.Mode=mpstopped) and(paint<>'1') then

begin

if listbox1.ItemIndex<listbox1.Items.Count then

begin

listbox1.ItemIndex:=listbox1.ItemIndex+1;
MediaPlayer1.FileName :=listbox1.Items[listbox1.ItemIndex]
MediaPlayer1.Open
if listbox1.ItemIndex=listbox1.Items.Count-1 then

MediaPlayer1.Notify :=false //当播放到最后一首时,停止响应ONNotify事件
else
MediaPlayer1.Notify :=true;
MediaPlayer1.play;
mediaplayer1.displayrect:=rect(0,0,form1.clientwidth,form1.clientheight);
//edit1.text:=listbox1.Items[listbox1.ItemIndex];
end;

end;



能告诉我
if (MediaPlayer1.Mode > mpNotReady) and (MediaPlayer1.Mode <= mpOpen) then
begin

这是包括那些状态,可以用‘>‘个符号吗?
谢谢,还是这样说谢谢,没有其他的办法,总不能以身想许吧,要不如果有机会,
请你吃饭,!!你在石家庄吗?

我的email:junz@inhe.net
 
呵呵,先打开文件,再设置displayrect属性,而且最好在TPanel上画!!!
 
if OpenDialog1.Execute then

begin

MediaPlayer1.FileName:=OpenDialog1.FileName;
MediaPlayer1.Open;
Mediaplayer1.DisplayRect:=Rect(0,0,Panel1.Width,Panel1.Height);
end;

同时设置这个MediaPlayer1的DISPLAY属性为这个显示的Panel1就可以了
 
我做了测试,没有问题的呀
 
mediaplayer1.open;
application.processmessage;//中断程序执行
mediaplayer1.step;
application.processmessage;
mediaplayer1.previous;//向前一桢



 
好象你用了OPEN方法就可以了,不要用PLAY这个方法可以吗?试一试。
 
type TMPModes = (mpNotReady, mpStopped, mpPlaying, mpRecording, mpSeeking, mpPaused, mpOpen);
property Mode: TMPModes;
也许应该修改为:
if (MediaPlayer1.Mode = mpOpen) then

begin

MediaPlayer1.Play;
MediaPlayer1.Rewind;
end;


我没有测试,但愿你能顺利解决这个问题。
 
我的已经问题解决了,只是没有时间来为大家分分,
谢谢大家,我分分了,都少给点可以吗,可能不公平,
请原谅点!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
719
import
I
I
回复
0
查看
692
import
I
I
回复
0
查看
614
import
I
后退
顶部