| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 | 论坛
    想学好编程,学好外语很重要  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> 应用开发 >> delphi >> 多媒体类 >> 文章正文
使用DELPHI实现文本文件显示和声音同步播放            【字体:
使用DELPHI实现文本文件显示和声音同步播放
作者:不祥    文章来源:-    点击数:    更新时间:2006-12-12

width="84%">
使用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;

	

[1] [2] 下一页  

文章录入:enadd    责任编辑:enadd 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • 在多媒体文件中批量抓取图象

  • 在Delphi中使用DirectX

  • 用Delphi进行OpenGL编程学习…

  • 实现图象局部放大的原理和方…

  • 如何将Wav文件做到EXE文件里

  • 改变图片效果

  • 用DELPHI实现位图显示特技

  • DELPHI显示JPEG图像文件

  • Delphi中对Jpeg格式文件的处…

  • 基于Delphi的图像漫游

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |