unit untMusic;interfaceuses
Classes, SysUtils, Dialogs, Mplayer, forms, ExtCtrls;type
tMusic = class(TThread)
private
{ Private declarations }
MusicList: TstringList;
MediaPlayer: TMediaPlayer;
procedure play;
procedure replay(sender: Tobject);
public
constructor Create(AOwner: TComponent);
destructor destory;
procedure AddMusic(MusicDir: string);
protected
procedure Execute; override;
end;implementation
{ tMusic }constructor tMusic.Create(AOwner: TComponent);
begin
MusicList := TstringList.Create; //
MediaPlayer := TMediaPlayer.CreateParented(tform(AOwner).handle);
MediaPlayer.AutoOpen := true;
inherited Create(false);
end;destructor tMusic.destory;
begin
MediaPlayer.Close;
MediaPlayer.Free;
MusicList.Free;
inherited;
end;procedure tMusic.AddMusic(MusicDir: string);
var
SR: TsearchRec;
findResult: integer;
FileExt: string;
begin
if not DirectoryExists(MusicDir) then exit;
findResult := FindFirst(MusicDir + '*.*', faAnyFile, SR);
if findResult = 0 then
repeat
if SR.Attr <> FaDirectory then
begin
FileExt := lowercase(ExtractFileExt(SR.Name));
if FileExt = '.mp3' then MusicList.Add(MusicDir + SR.Name);
end;
until FindNext(SR) <> 0;
findClose(SR);
end;
procedure tMusic.Execute;
begin
play;
end;procedure tMusic.play;
begin
if MusicList.Count < 1 then exit;
MediaPlayer.FileName := MusicList.Strings[random((MusicList.Count))];
MediaPlayer.DeviceType := dtAutoSelect;
try
MediaPlayer.Open;
MediaPlayer.Notify := true;
MediaPlayer.play;
except end;
end;procedure tMusic.replay(sender: Tobject); //这个过程为什么没有执行...
begin
if MediaPlayer.Position = MediaPlayer.Length then
begin
play;
end;
MediaPlayer.Notify := true;
end;end.
Classes, SysUtils, Dialogs, Mplayer, forms, ExtCtrls;type
tMusic = class(TThread)
private
{ Private declarations }
MusicList: TstringList;
MediaPlayer: TMediaPlayer;
procedure play;
procedure replay(sender: Tobject);
public
constructor Create(AOwner: TComponent);
destructor destory;
procedure AddMusic(MusicDir: string);
protected
procedure Execute; override;
end;implementation
{ tMusic }constructor tMusic.Create(AOwner: TComponent);
begin
MusicList := TstringList.Create; //
MediaPlayer := TMediaPlayer.CreateParented(tform(AOwner).handle);
MediaPlayer.AutoOpen := true;
inherited Create(false);
end;destructor tMusic.destory;
begin
MediaPlayer.Close;
MediaPlayer.Free;
MusicList.Free;
inherited;
end;procedure tMusic.AddMusic(MusicDir: string);
var
SR: TsearchRec;
findResult: integer;
FileExt: string;
begin
if not DirectoryExists(MusicDir) then exit;
findResult := FindFirst(MusicDir + '*.*', faAnyFile, SR);
if findResult = 0 then
repeat
if SR.Attr <> FaDirectory then
begin
FileExt := lowercase(ExtractFileExt(SR.Name));
if FileExt = '.mp3' then MusicList.Add(MusicDir + SR.Name);
end;
until FindNext(SR) <> 0;
findClose(SR);
end;
procedure tMusic.Execute;
begin
play;
end;procedure tMusic.play;
begin
if MusicList.Count < 1 then exit;
MediaPlayer.FileName := MusicList.Strings[random((MusicList.Count))];
MediaPlayer.DeviceType := dtAutoSelect;
try
MediaPlayer.Open;
MediaPlayer.Notify := true;
MediaPlayer.play;
except end;
end;procedure tMusic.replay(sender: Tobject); //这个过程为什么没有执行...
begin
if MediaPlayer.Position = MediaPlayer.Length then
begin
play;
end;
MediaPlayer.Notify := true;
end;end.
解决方案 »
- 请问动态创建IDHTTP,如何写入触发事件
- Tlist.Sort 排序问韪
- 在线请教:关于调用stringgrid的onselectcell事件
- 怎么做成像QQ一样,最小化的时候就隐藏,然后用快捷键再调出程序呢?
- 如何获得应用程序的存放路径
- 请问大家,在动态生成的组件,为什么不显示?
- 简单问题:D7如何引用tprinter类!
- 想交几个这里的朋友,大家可以一起进步的那种,当然也可以一起'退步',不知谁有兴趣
- 哪位大侠解释一下stdcall的用途,比如以下定义的函数有什么特别的地方?
- 初始化的控件在公共单元怎么多次引用?
- 求 删除指定文件路径下的一类文件的代码!
- 如果windows隐藏扩展名,怎样读出一个完整的文件名(包括路径)?
还有你创建对象的顺序好像不对吧,应该是先
inherited Create(false);
……//这里创建自已的对象
begin
MusicList := TstringList.Create; //
MediaPlayer := TMediaPlayer.CreateParented(tform(AOwner).handle);
MediaPlayer.AutoOpen := true;
mediaplayer.OnNotify:=replay; //少写了一句,,
inherited Create(false);
end;但是加上这句,还是不能正常运行啊..
有时报错,有时又能正常启动,但都不能连续播放..