请问如何用trackbar控制mediaplay播放mp3的进度(100分)

  • 主题发起人 主题发起人 ukulele
  • 开始时间 开始时间
U

ukulele

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何用trackbar控制mediaplay播放mp3的进度
 
这是一个用TScrollBar控制的简单例子,你可以参考一下,不过TTrackBar没有类似的事件。
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ComCtrls, StdCtrls, MPlayer;

type
TForm1 = class(TForm)
MediaPlayer1: TMediaPlayer;
Button1: TButton;
Timer1: TTimer;
ScrollBar1: TScrollBar;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure ScrollBar1Scroll(Sender: TObject;
ScrollCode: TScrollCode;
var ScrollPos: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;


var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

MediaPlayer1.FileName := 'E:/01.mp3';
MediaPlayer1.Open;
ScrollBar1.Min := 0;
ScrollBar1.Max := MediaPlayer1.Length;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin

ScrollBar1.Position := MediaPlayer1.Position;
end;


procedure TForm1.ScrollBar1Scroll(Sender: TObject;
ScrollCode: TScrollCode;
var ScrollPos: Integer);
begin

MediaPlayer1.Pause;
MediaPlayer1.Position := ScrollBar1.Position;
MediaPlayer1.Play;
end;


end.
 
试过了,好像不行啊.
 
哦?不行吗?我这里可以的,你那里什么现象?
 
可以使用trackbar,我想大家说的事件是onmousedown吧,
可以直接继承trackbar控件做一个新的控件,添加上onmousedown就是了!
 
没有用过MediaPlayer
事件应该是TrackBar的OnChange

下面的这个代码可能有点问题 Timer对TrackBar的控制 会造成Onchange 用个全局变量控制一下就行了

procedure TForm1.FormCreate(Sender: TObject);
begin

Form1.TrackBar1.Max:=Form1.MediaPlayer1.Length;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin

Form1.TrackBar1.Position:=Form1.MediaPlayer1.Position;
end;


procedure TForm1.TrackBar1Change(Sender: TObject);
begin

Form1.MediaPlayer1.Position:=Form1.TrackBar1.Position;
end;

 
这段代码肯定有问题,trackbar就是在一个点的左右不断的晃动,呵呵,
就是按照我说的,继承trackbar控件,然后添加上onmouseup,onmousedown
两个事件就可以了,很方便的,就只是需要这两行代码就是了!
 
>>下面的这个代码可能有点问题 Timer对TrackBar的控制 会造成Onchange 用个全局变量控制一下就行了
这句话白说了。。还是写全了吧。



var EnableClick:Boolean=true;

procedure TForm1.FormCreate(Sender: TObject);
begin

Form1.TrackBar1.Max:=Form1.MediaPlayer1.Length;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin

EnableClick:=False;
Form1.TrackBar1.Position:=Form1.MediaPlayer1.Position;
EnableClick:=True;
end;


procedure TForm1.TrackBar1Change(Sender: TObject);
begin

If EnableClick then

Form1.MediaPlayer1.Position:=Form1.TrackBar1.Position;
end;

 
多人接受答案了。
 
后退
顶部