Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16495837
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 20:48:03

下载本文示例代码
p>本文出自delphi技术网   英语已经逐渐成为一种世界性的语言,现代人学习英语的热情一浪高过一浪,所以,英语复读机十分的热销。但是,无论功能如何强大的复读机都有一个明显的缺陷——复读时间的固定的。如果复读时间太短,那么,当遇到长句子时就无能为力;如果复读的时间很长,使用时就免不了复读一些多余的部分,免不了进行快进(时下有些200秒的复读机具有快进功能),这与磁带的快进一样麻烦!所以,笔者想利用Delphi强大的媒体播放控件开发一个软件复读机。软件复读机最大的优点是,无论是句子的长短您都能自如地复读!绝对不需要倒带,也不需要快进。不仅如此,软件复读机还具有随机选读功能,这是一般复读机很不好实现的。准备工作   Delphi的媒体播放控件可已播放各种声音文件。我们可以根据自己的喜好把学习资料录制到计算机中,存成合适的格式。一般可存成wave文件或mp3文件。复读机的开发   开发软件复读机使用的主要是Delphi的媒体播放控件TMediaplayer。该控件在系统控制(system)页中。   首先创建一个应用程序。设定主窗体的BorderStyle为BsDialog,禁止窗体的放大与缩小。设定KeyPreview为True,让主窗体处理键盘事件。 在主窗体上放置控件:其中: 媒体播放器是程序的关键控件,用来实现声音的播放。 TrackBar用来指示当前的播放进度。 左边的TlistBox(SectionList)用来存放将要播放的声音文件名(学习资料)。 右边的两个TlistBox(StartList、StopList)用于记录复读过的句子。 ‘增加’与‘删除’按钮用于维护学习资料。 TrackBar1用于显示播放进程。 Timer1用于动态显示播放进度。 OpenDialog1用于选择播放文件。复读功能的实现: ① 程序中设置两个整数(StartPos, SstopPos)用于记录播放的起止点,并在初始化时将StopPos赋值为-1。 ② 每次播放时记录当时的起始值:StartPos := Mediaplayer1.Position; ③ 程序中用空格键控制复读,回车键继续放音。首先,设置主窗体的KeyPreview为True,使主窗体能够截获按键消息。然后,重载OnKeyDown方法。代码如下: 自由选读功能的实现:   由于在复读时记录了所有复读过的句子的起止 ??钥梢越?腥我庖痪涞母炊痢5庇没в檬蟊晁?鳌??羲暝隆?心骋恍惺保?芍苯忧谢坏礁镁涞牟シ拧4?肴缦拢? procedure TRepeaterForm.ListDblClick(Sender: TObject); begin SID := (Sender as TListBox).ItemIndex; //取得当前行的索引 SID StopList.ItemIndex := SID; //将终点列表设置为 SID StartList.ItemIndex := SID; //将起始列表设置为 SID StartPos := StrToInt(StartList.Items[SID]);//取得开始位置 StopPos := StrToInt(StopList.Items[SID]);//取得终止位置 Mediaplayer1.StoP; //停止当前的播放 Mediaplayer1.StartPos := StartPos; //设置新的播放范围 Mediaplayer1.EndPos := StopPos; Mediaplayer1.Play; //播放指定范围的声音 end; 学习资料的添加: 单击增加按钮用于增加学习资料。需要注意的是在增加新的文件之前应检索原有的列表,以防止重复。代码如下: procedure TRepeaterForm.AddBtnClick(Sender: TObject); var fn: string; begin if OpenDialog1.Execute then    begin     fn := OpenDialog1.FileName;     if SectionList.Items.IndexOf(fn)$#@60;0 then //先检索该文件,如果不存在                SectionList.Items.Add(fn); //加入到列表中    end;end; 学习资料的选择:   通过重载OnClick方法实现。先取得单击时的索引,然后通过Items[索引]取得文件名。将文件名赋值给Mediaplayer的Filename属性,然后调用Open方法即可。(代码略)   另外,在程序的初始化时要打开学习资料文件;程序退出时将学习资料存盘。这些功能都是通过TlistBox.Items.LoadFromFile和TlistBox.Items.SaveToFile实现的(代码略)。   该程序在中文Windows98 Delphi5.0环境下调试通过。全部源代码可Mail作者索取。 p>本文出自delphi技术网   英语已经逐渐成为一种世界性的语言,现代人学习英语的热情一浪高过一浪,所以,英语复读机十分的热销。但是,无论功能如何强大的复读机都有一个明显的缺陷——复读时间的固定的。如果复读时间太短,那么,当遇到长句子时就无能为力;如果复读的时间很长,使用时就免不了复读一些多余的部分,免不了进行快进(时下有些200秒的复读机具有快进功能),这与磁带的快进一样麻烦!所以,笔者想利用Delphi强大的媒体播放控件开发一个软件复读机。软件复读机最大的优点是,无论是句子的长短您都能自如地复读!绝对不需要倒带,也不需要快进。不仅如此,软件复读机还具有随机选读功能,这是一般复读机很不好实现的。准备工作   Delphi的媒体播放控件可已播放各种声音文件。我们可以根据自己的喜好把学习资料录制到计算机中,存成合适的格式。一般可存成wave文件或mp3文件。复读机的开发   开发软件复读机使用的主要是Delphi的媒体播放控件TMediaplayer。该控件在系统控制(system)页中。   首先创建一个应用程序。设定主窗体的BorderStyle为BsDialog,禁止窗体的放大与缩小。设定KeyPreview为True,让主窗体处理键盘事件。 在主窗体上放置控件:其中: 媒体播放器是程序的关键控件,用来实现声音的播放。 TrackBar用来指示当前的播放进度。 左边的TlistBox(SectionList)用来存放将要播放的声音文件名(学习资料)。 右边的两个TlistBox(StartList、StopList)用于记录复读过的句子。 ‘增加’与‘删除’按钮用于维护学习资料。 TrackBar1用于显示播放进程。 Timer1用于动态显示播放进度。 OpenDialog1用于选择播放文件。复读功能的实现: ① 程序中设置两个整数(StartPos, SstopPos)用于记录播放的起止点,并在初始化时将StopPos赋值为-1。 ② 每次播放时记录当时的起始值:StartPos := Mediaplayer1.Position; ③ 程序中用空格键控制复读,回车键继续放音。首先,设置主窗体的KeyPreview为True,使主窗体能够截获按键消息。然后,重载OnKeyDown方法。代码如下: 自由选读功能的实现:   由于在复读时记录了所有复读过的句子的起止 ??钥梢越?腥我庖痪涞母炊痢5庇没в檬蟊晁?鳌??羲暝隆?心骋恍惺保?芍苯忧谢坏礁镁涞牟シ拧4?肴缦拢? procedure TRepeaterForm.ListDblClick(Sender: TObject); begin SID := (Sender as TListBox).ItemIndex; //取得当前行的索引 SID StopList.ItemIndex := SID; //将终点列表设置为 SID StartList.ItemIndex := SID; //将起始列表设置为 SID StartPos := StrToInt(StartList.Items[SID]);//取得开始位置 StopPos := StrToInt(StopList.Items[SID]);//取得终止位置 Mediaplayer1.StoP; //停止当前的播放 Mediaplayer1.StartPos := StartPos; //设置新的播放范围 Mediaplayer1.EndPos := StopPos; Mediaplayer1.Play; //播放指定范围的声音 end; 学习资料的添加: 单击增加按钮用于增加学习资料。需要注意的是在增加新的文件之前应检索原有的列表,以防止重复。代码如下: procedure TRepeaterForm.AddBtnClick(Sender: TObject); var fn: string; begin if OpenDialog1.Execute then    begin     fn := OpenDialog1.FileName;     if SectionList.Items.IndexOf(fn)$#@60;0 then //先检索该文件,如果不存在                SectionList.Items.Add(fn); //加入到列表中    end;end; 学习资料的选择:   通过重载OnClick方法实现。先取得单击时的索引,然后通过Items[索引]取得文件名。将文件名赋值给Mediaplayer的Filename属性,然后调用Open方法即可。(代码略)   另外,在程序的初始化时要打开学习资料文件;程序退出时将学习资料存盘。这些功能都是通过TlistBox.Items.LoadFromFile和TlistBox.Items.SaveToFile实现的(代码略)。   该程序在中文Windows98 Delphi5.0环境下调试通过。全部源代码可Mail作者索取。 下载本文示例代码


用Delphi自制英语复读机用Delphi自制英语复读机用Delphi自制英语复读机用Delphi自制英语复读机用Delphi自制英语复读机用Delphi自制英语复读机用Delphi自制英语复读机用Delphi自制英语复读机用Delphi自制英语复读机用Delphi自制英语复读机用Delphi自制英语复读机用Delphi自制英语复读机用Delphi自制英语复读机用Delphi自制英语复读机用Delphi自制英语复读机
阅读(231) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~