倒计时,提醒会议开始时间
技术与开发
我所在的公司经常会举办一些会议,宣传自己的产品、讲解一些技术、介绍公司的发展等,会议开始前,一般都会放一些宣传资料(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控件用于辩论赛的选手发言时间控制、跳绳比赛的时间提示等需要使用倒计时的地方。