倒计时,提醒会议开始时间

技术与开发

我所在的公司经常会举办一些会议,宣传自己的产品、讲解一些技术、介绍公司的发展等,会议开始前,一般都会放一些宣传资料(PPT或者短片)。为了提醒会议正式开始还剩下多少时间,都会在PPT中做一个倒计时牌,但如果播放的是短片就没有倒计时了。

我设计了一个小程序(程序下载地址:http://www.shudoo.com/bzsoft),无论是播放PPT还是短片都可以显示倒计时,不用每次都要在PPT中做倒计时牌了。

公司需求:会议开始前的几分钟,播放公司的宣传资料(PPT、短片等),推广公司的产品、技术等,并提示会议开始前剩余的时间。当会议开始后,软件自动退出。

软件原理:利用Timer控件的OnTimer事件实现倒计时功能。Timer控件的Enable属性为true时,Timer控件的OnTimer事件默认每秒执行一次。设计一个输入框,让工程师输入离会议开始的时间,比如8分钟,然后每次执行Timer控件的OnTimer事件让设定的时间减少1秒,并开始播放宣传资料。当时间为0后,表示会议开始,软件自动退出。

技术要点:在设置好离会议开始还剩余的时间后,还有两个问题需要解决:一个是如何让时间显示出来。解决办法是使用静态文本StaticText来代替普通的Label,这样就能保证显示的倒计时浮动在短片或者PPT上层。

另一个是每当minute为整数且second<3时,需要醒目提醒会场人员还剩多少时间会议开始。解决办法是在Timer的OnTimer事件中,判断second小于3时改变StaticText的文本属性(StaticText的坐标、字体颜色、字体大小等)来实现醒目提示。

软件开发步骤

第一步:启动Delphi7.0,新建一个工程,在Form1窗体上添加两个Edit(用于输入倒计时的时间等)、一个OpenDialog、两个Button(用于选择宣传资料)。新建Form2,在窗体上添加一个Timer(实现倒计时功能)、一个StaticText(显示剩余时间)、一个RealAudio(播放宣传资料)。

第二步:Form1窗体的制作。此窗体用来设置会议开始的时间,选择需要播放的宣传资料。输入相关代码,其中关键代码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):

Form2.RealAudio1.source:=OpenDialog1.FileName;//工程师定位需要播放的宣传资料

Edit2.Text:= Form2.RealAudio1.source;//把宣传资料赋值给播放器

Form2.RealAudio1.doplay;//打开并启动播放器

Form2.StaticText1.Caption:= tmptime;//显示初始时间为设定值加上 ":00 "

Form2.StaticText1.Font.Size := 15; //设定Form2的倒计时显示标签的各项属性

Form2.StaticText1.Font.Color:=clBlack;

Form2.StaticText1.Left := 5;

Form2.StaticText1.Color:=clBtnFace;

Form2.Timer1.Enabled:=true; //启动Form2的时钟

Form2.minute:=StrToInt(Form1.Edit1.text); //给Form2的minute变量赋值

Form2.second:=0; //给Form2的second变量赋值

第三步:使用时钟控件Timer1的OnTimer事件实现倒计时的功能。每次执行OnTimer事件时,判断设定的时间是否已经为0,如果没有为0就减少1秒,并操作字符串把时间显示为“00:00”格式,如果设定的时间已经为0,则退出此程序。

当到了特定时间段时,改变文本的颜色、大小等属性,对会场人员进行醒目提示。输入相关代码,其中关键代码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):

else //如果分不为0,秒为0,那么分就减1,秒赋值为60

begin

minute:=minute-1;

second:=60;

end;

end

else //秒不为0

begin

second:=second-1;//秒减1

//下面是显示格式

if minute<10 then //如果分钟小于10,在分钟前加0显示

begin

tmpminute:=IntToStr(0)+IntToStr(minute);

end

else

tmpminute:=IntToStr(minute);

if second<10 then //如果秒钟小于10,在秒钟前加0显示

begin

tmpsecond:=IntToStr(0)+IntToStr(second);

end

else

tmpsecond:=IntToStr(second);

end;

if second<3 then //如果秒小于3,改变 StaticText1的大小、颜色及位置,醒目提醒大家

begin

StaticText1.Font.Size := 40;

StaticText1.Font.Color:=clRed;

StaticText1.Caption:='离会议开始还有'+ tmpminute+'分钟';

StaticText1.Left := (Form2.Width - StaticText1.Width) Div 2 ;

编后

此软件通过Timer控件的OnTimer事件,取出设定的时间后对设定的时间进行分析,改变分、秒的值实现了倒计时功能。我们还可以把Timer控件用于辩论赛的选手发言时间控制、跳绳比赛的时间提示等需要使用倒计时的地方。