扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
准备工作
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肴缦拢?br> 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;
beginif 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作者索取。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者