说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

使用DELPHI实现文本文件显示和声音同步播放

HTML文档下载 WORD文档下载 PDF文档下载
使用DELPHI实现文本文件显示和声音同步播放

---- 在一些语言教学软件中,经常使用文本显示和声音同步播放,我们可以用DEL PHI实现之。

---- 一、材料的制作

---- 首先,我们选择几篇文章,这里我们选择马丁路德金、林肯和里根的演说,每一篇文章分为若干句,在制作声音文件时,记下每个句子的开始时间和结束时间,然后将其记到一个数据表中,这个表有如下字段:NO、TEXT、STARTTIME

分别表示每句序号、内容、开始时间。

---- 二、 界面的制作

---- 在DELPHI中创建一个新工程,在FORM中放入多媒体控件,RTF编辑器,命令按钮,单选分组框,数据表,时钟和标签,如图所示

---- 三、各个控件的属性

---- 1、 多媒体控件的AutoEnable和AutoOpen特性设置为False

VisibleButtons特性设置Record、Eject、Step为不可见。

---- 2、 Table控件的DatabaseName设为存放表的目录,我们将应用程序、声音文件和表存放在myprog目录,因此这里将DatabaseName设为c:\myprog,将TableName设为默认的播放文件对应的数据表的名字,这里设为ex1.dbf。

---- 3、 Radiogroup控件的Caption设为 ‘请选择播放内容’,Itmes特性中加上三行:马丁路德金,林肯,里根。

---- 4、 Richedit控件的Lines特性加上‘演讲内容。

---- 四、代码的编写

---- 1、变量声明

var isend:Boolean;

CurrentButton:TMPBtnType;

CurrentPlay

CurrentDisp:longint;

---- 其中isend表示播放是否已经到了末尾,CurrentButton表示当前MediaPlayer元件中按下了哪个按钮,CurrentPlay

CurrentDisp表示当前播放记录及当前显示记录。

---- 2、在FormCreate事件中做一些必要的准备工作,其代码如下:

procedure TForm1.FormCreate(Sender: TObject);

begin

Table1.TableName:='ex1.dbf'; Table1.Open;

MediaPlayer1.FileName:='ex1.wav';MediaPlayer1.Open;

MediaPlayer1.TimeFormat:=tfMilliseconds;

isend:=False;

CurrentButton:=btStop;

CurrentDisp:=1;

CurrentPlay:=1;

end;

---- 3、在单选分组框中加进如下代码:

procedure TForm1.RadioGroup1Click(Sender: TObject);

begin

MediaPlayer1.Close; Table1.Close;

case radiogroup1.ItemIndex of

0:begin MediaPlayer1.FileName:='ex1.wav';

Table1.TableName:='ex1.dbf';end;

1:begin MediaPlayer1.FileName:='ex2.wav';

Table1.TableName:='ex2.dbf';end;

2:begin MediaPlayer1.FileName:='ex3.wav';

Table1.TableName:='ex3.dbf'; end;

end;

Table1.Open; MediaPlayer1.Open;

end;

---- 4、为了适当修改MediaPlayer元件中各个按钮的功能,需要编写MediaPlayer元件的click事件的代码,主要是修改“快进”及“快退”的功能,使其每次移动一句,且移动后直接播放,而不用再按“播放”按钮。为达到这个功能,在过程的一开始,设置DoDefault参数为False

表示不执行默认的动作,在过程的中间部分,加上必要的处理,在过程的结束处,写上根据按下的按钮执行相应功能语句。

procedure TForm1.MediaPlayer1Click(Sender: TObject;

Button: TMPBtnType; var DoDefault: Boolean);

begin

DoDefault:=False;

with MediaPlayer1 do

begin

case Button of

btPlay : begin

if isend=true then

begin

Table1.first; Position:=start;

CurrentPlay:=1; CurrentDisp:=1;

isend:=False;

RichEdit1.lines.clear; RichEdit1.lines.add

('演讲内容');

end;

CurrentButton:=btPlay;

end;

btStop : begin CurrentButton:=btStop;

isend:=true;

end;

btpause: if CurrentButton=btPlay then

CurrentButton:=btpause

else if CurrentButton=btpause then

CurrentButton:=btPlay;

btPrev: begin CurrentButton:=btPrev;

Table1.Prior;

Position:=Table1.fieldvalues

['STARTTIME'];

CurrentButton:=btPlay;

end;

btBack: begin CurrentButton:=btBack;

Table1.first; Position:=start;

CurrentPlay:=1;

CurrentDisp:=1;

RichEdit1.lines.clear;

RichEdit1.lines.add

('演讲内容');

CurrentButton:=btPlay;

end;

btNext: begin CurrentButton:=btNext;

Table1.Next;

Position:=Table1.fieldvalues

['STARTTIME'];

CurrentButton:=btPlay;

end;

end;

case CurrentButton of

btPlay: Play;

btpause:pause;

btStop:Stop;

end;

end;

end;

---- 5、为了能同步显示文本,需要编写定时器OnTime事件的代码,如果当前播放的时间超过了当前记录的开始时间,则设置CurrentPlay为当前记录号,如果CurrentPlay超过了CurrentDisp

则显示当前记录。

procedure TForm1.Timer1Timer(Sender: TObject);

begin

with MediaPlayer1 do

begin

if CurrentButton=btPlay then

begin

if not Table1.eof and (Position

>Table1.FieldValues['STARTTIME'])

then

begin CurrentPlay:=Table1.recno;

if CurrentPlay >=CurrentDisp then

begin

RichEdit1.Lines.add(Table1.fieldvalues['TEXT']);

CurrentDisp:=CurrentDisp+1;

end;

Table1.Next;

end;

if Table1.eof then

begin

CurrentButton:=btStop;

isend:=true;

end;

end;

end;

end;

---- 注:在MediaPlayer的click事件中,使用了btPrev

btNext等常量,为了能够通过编译,在uses子句中需将ComCtrls放在mPlayer之前,以免引起冲突。

好用的在线编辑器百度UEditor ASP.NET如何从URL或route数据中得到controller类型和action信息 Discuz X论坛数据表结构:论坛主题数据表pre_forum_thread Discuz X论坛数据表结构:论坛帖子数据表pre_forum_post jQuery UI 消息框(message box)的使用 kmp算法中的求Next()函数的算法 ASP.NET MVC3 如何将DataTable绑定到Html.DropDownList PHP调用COM组件 农行网上银行支付接口:无法读取商户端配置文件 农行网上银行支付接口:商户代理卖方挂单成交功能测试 Windows Phone 7 实现简单的GPS定位器 C#如何删除string中的Html标记 ImageStone图像处理C++类库 jQuery Mobile 开发入门手册--概述 jQuery Mobile 开发入门手册--技术理论 jQuery Mobile 开发入门手册--组件 SMTP/POP3收发邮件的C#类库SmtPop.Net 用C#编写的Telnet开源类库 Visual Studio C#创建Windows服务(Windows Service) C#取得Windows服务列表 C#编程自动安装Windows服务 C#安装/删除 .NET Windows服务 C#启动、停止、重启Windows服务 jQuery实现Ajax提交form表单的简单方法 字符串String与枚举Enum之间的转换[C#] Javascript统计DOM元素里文字的行数 C#从Web网站下载文件 C#得到区域名称列表 C#合并多个PrintDocument WpWidgetLibrary - Windows Phone的HTML部件库(Widgets) 让你不再害怕C语言指针 =============怎么固定一个ActiveX控件的大小为资源里一个对话框的大小?========= 哲学家就餐问题,为了防止死锁,通常用几个信号量就可以解决? 这几天心里赌的慌,女友怎么能够这样! api中怎样初始时就最大化 小问题,在线等....好了就结分 怎么样检查这些端口是做什么的? 我读取数据集的时候,为什么会产生越界的异常? 如何通过超链接传值到下一页 谢谢 如何把当前时间组合成一个字符串? 请教大家一个问题: 请教大家一个问题: 本人给出配置表,请问路由器配置好之后,客户机网上邻居--》本地连接该怎么设置? 提问:页面如何顶边??? 难道嗳!!! 如何在几个窗体之间进行数据传递 请问:为什么编译无错,但生成。EXE文件时却有错,我是在卸载中文VC后安装英文版的 高手们,有一事不明! 郁闷~~ 调用VCDLL的参数传递问题 各位好心的大哥帮帮我,救救我~~~~~~我在线等待~~~~~~~~~ 六七十年代发生的几件很牛B的事情【转载】 求一存储过程写法 select ....union windows xp上oracle 816的数据库服务进程不能启动 image字段的处理? 今天我开始上班了 数据判断加分 关于注册用户问题 请教关于时间类型的问题 如何获取一个字符串中中文字符的个数?100分 如何用api获取cpu的processorId? 如何获取一个字符串中中文字符的个数?100分 神啊,救救我吧! 能把bcb6的程序转换成bcb5的吗? 如何获取服务器时间? 万分紧急,请大哥们帮小弟!!!!!!!!我在线等待高手相救 请教关于连接数据库的问题 如何把当前时间组合成一个字符串? 如何使SOAP客户端的web引用的url变成程序中设置(就是不写死了),又不需要重新编译客户端程序的! 我在运行某些程序的时候,为什么会出现office2000的安装进程,还要叫我放入off2000的安装盘??? 请问Oracle触发器里能执行Grant语句吗?? 关于DBGRID字段显示问题 连接时出现这样的提示,可能的问题在那里? 碰到一个几乎让我晕倒的问题!! 紧急提问:我的小型机死机了,怎么样关闭安全的关闭数据库,在重新启动小型机?在线... access有没有光盘路径的设置? 如何让DBGrid控件显示指定的数据 谁有photoshop7.0的注册码?在线等待,立即给分 如何在vfp中实现将表保存在硬盘上(用命令) 关于水晶报表的问题.很急.... 学unix下的c++编程看什么书好? 公与之乘,战于长勺.帮我把这句话翻译成现代文 作者 躺着 打两个滚 踢几脚球 赛几趟跑 捉几回迷藏运用了什么修辞手法 修辞手法的作用,速回! 急求主题为美丽是种力量辩论赛反方答辩材料!最好有那种不美丽也很牛掰的人的那种例子~~非常非常感谢啊!谢谢举例啊,但是主要是辩论的资料。。。 一辆汽车先从15m/s的速度行驶10s后又以5m/s的速度驶15s在这25s内汽车的平均速度 我们哲学课要搞辩论,谁能给个好的题目啊,还有一个答辩资料,开篇陈词之类的 找首歌 有句暖暖风 在心中~知道的朋友 ,请说下 仿写句子:绿树因有了暖风吹拂,才会变得潇洒飘逸 仿写句子:在那醉人的暖风中,观热带雨林,涉澜沧碧水,登傣家竹楼,拍下了一张张珍贵的图片,留下了一串串彩色的记忆. 写暖风的句子 12条18厘噶钢筋,桩噶直径1800,如何计算间距 英语翻译军人无法驾驭千里马的原因是什么 叙利亚发电系统遭袭击全国停电 被指反安倍称在预算委员会上很累 自比乔布斯南京大学两位院士候选人就论文是否造假男孩被母亲男友砍断右手 其母:只因拒汪洋:今年粮食丰收基本定局 生产将实美国共和党遭保守派绑架 民主党有望夺水利部:今年解决6343万农村人口饮温州民资设立民营银行方案已上报北大回应不续聘夏业良:所谓\"政治迫松下半导体部门将大幅裁员部分港生在内地\"水土不服\" 投诉太平人寿佛山分公司:再向外来工子女学“自组团”订票报名 今日中午12时截“广州”一夜成名精明主妇市领导到从化调研重大投资项目情况“免费”偷倒垃圾?没门!启事·情感天地陪伴生命云珠奖网络投票20日截止 本土品牌有RQ 180隐身无人机曝光婆婆和妈妈
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘