admin 管理员组

文章数量: 1086019


2024年3月27日发(作者:容器类别1ls)

电脑编程技巧与维护 

利用VB制作可设定时间的倒计时器 

王思刚。苏金丽 

(西北工业大学明德学院经济管理系,西安710124) 

摘要:利用VB软件中计时控件及其他控件开发出可设定时间的倒计时器,并给出相应的源代码。 

关键词:VB;可设定时间;倒计时器 

Using VB Production Can be Set Time Counter-down 

WANG S/ ̄ng,sU Jinli 

(Northwestem Polytechnical University Ming De College Management of Economy Department,Xi an 710124) 

Abstract:Using VB software timer control and other control d eveloped can be set time counter—down.and gives the 

corresponding source. 

Key words:VB;Set time;Counter-down 

1前言 

VB是一门具有强大功能的可视化编程软件,随着计算机 

的普及,VB编程爱好者越来越多。利用VB中计时控件制作 

倒计时器应用于各种比赛计时具有良好效果,比如在各项演 

讲比赛、辩论赛等场合中都会使用倒计时器。 

Private Declare Function SetWindowPos Lib”user32” 

(ByVal hwnd As Long, 

.J3yVal hWndlnsertAfter As Long,ByVal X As Long, 

_ByVal Y As Long,ByVal CX As Long, 

ByVal cy As Long,ByVal wFlags As Long)As 

Long 

Const SWPNOMOVE:&H2 

_

2界面概述 

该软件主要利用标签、按钮、计时器、图像框、文本框、 

框架等控件来制作。在程序的运行时,首先在文本框中输入 

要进行倒计时的时间再单击开始,否则提示重新输入;利用 

Const SWP NOSIZE=&HI 

Const HWNDJ0PM0ST=一1 

Const flags=SWP NOMOVE Or SWP NOSIZE 

个重置按钮可将程序整个运行过程重新开始,供多次重复 

4.2窗体加载 

Private Sub Form

Load 0 

使用。同时,在进行到最后3O秒时软件会发出一声警报声; 

最后10秒,警报声每秒一次直至结束,用来提示参与者时 

间。 

Me.Left=(Screen.Width—Me.Width、/2 

Me.Top=(Screen.Height—Me.Height)/2 

SetWindowPos Form1.hwnd,HWNDTOPMOST,0,0,O, 

3 窗体设计 

(1)在属性窗口设置Form的BorderStyle为“0一None”, 

0,flags 

End Sub 

加载Picture属性设置背景图片。 

(2)添加image1用来存放学院图标,文本框txt1用来输 

入活动主题。 

4.3 Timer事件 

4.3.1设置Timerl 

Private Sub Timerl Timer 0 

n=n——1 

If n=-1 Then 

S=S——1‘n=9 

(3)添加两个框架,框架Frl用来显示倒计时时间,其中 

存放5个标签;Fr2用做时间输入框,其中存放2个文本框和 

2个标签。 

EndIf 

If S=-1 Then 

(4)添加3个按钮,用作“开始”“重置”“退出”命 

令。 

m=m一1:S=59 

EndIf 

(5)再添加1个标签,caption为“请重新输入计时时 

间!”。添加image2中图片用来提示时间到。 

Lb1.Caption=Format(m,”00”) 

Lb3.Caption=Format(S,”00”) 

(6)设置3个Timer控件。Timerl用来控制倒计时, 

Timer2 f3)用来激发警报声。 

Lb5.Caption=Format(n,”0”) 

最后lO秒显示 

If m<1 And S<=10 And n<1 Then 

4 编写程序 

4.1通用声明 

定义变量 

Dim m As Integer,S As Integer,n As Integer,i As Integer 

作者简介: 

王思刚(1988一),07级学生;苏金丽(1988一), 

07级学生。 

2010—07一O9 

收稿日期: 

调用SetWindowPos函数设置窗体位于最前面 

38一 

S0FrWARE DEVELOPMENT AND DESIGN 软件开发与设计 

Fr1.Visible=False:Timer2.Enabled=Tme 

i=Lb3.Caption:Lb8.Caption=i 

Lb8.Visible=TⅢe 

EndIf 

最后3O秒报警 

If m=0 And S=30 And n=0 Then 

Timer3.Enabled=T_nle:Timer3.Interval=0 

EndIf 

时间到 

H m=0 And S=0 And n=0 Then 

Timer1.Enabled=False:Timer2.Enabled=False 

停止计时器 

Lb8.Visible=False:Image2.Visible=Tme 

EndIf 

End Sub 

4.3.2设置Timer2(3) 

Private Sub Timer2(3)_Timer 0 

Beep 

End Sub 

4.4设置命令按钮 

4.4.1“开始” 

Private Sub Cstart Crick 0 

Cstart.Enabled=False:Creset.E力abled=Tme 

提示重新输入 

If Txt2.Text=… And Txt3.Text=””Then 

Flr1.Visible=蹦se:Lb9.Visible=True 

Creset.Enabled=False:Txt2.SetFoCUS 

E1se 

获取倒计时时间 

m=Val(Txt2.Text):S=Val(Txt3.Text):n=0 

Lb1.Caption=Format(m,”o0”) 

Lb3.Caption=Format(S,”00”) 

Lb5.Caption=Format(n,”0”) 

Timer1.Enabled=True‘将计时器激活 

F 2.Visible=False 

EndIf 

End Sub 

4.4.2“重置” 

Private Sub CReset Click 0 

Timer1.Enabled=False 

Fr1.Visible=True:Fr2.visible=Tme 

返回初始值 

m=0:S=0:n=0 

Lb1.Caption=Format(m,”0HD”) 

Lb3.Capdon=Format(s,”0o”) 

Lb5.Caption=Format(n,”0”) 

Txt2.Text=…’:Txt3.Text=”” 

Txt2.SetFOCUS:Cstart.Enabled=Tme 

If Timer2.Enabled=True Then 

Timer2.Enabled=False 

EndIf 

If Lb8.Visible=True Then 

Lb8.Visible=False 

EndIf 

If Image2.Visible=T e Then 

Image2.Visible=False 

End If 

End Sub 

4.4.3“退出” 

Private Sub Cover

_

Click() 

End 

End Sub 

4.5文本框设置 

设置文本框键入限制 

Private Sub Txt2(3)_KeyPress(KeyAscii As Integer) 

Cstart.Enabled:True:Fr1.Visible=Tme 

Lb9.Visible:False 

If KeyAscii<Asc(”0”)Or KeyAscii>Asc(”9”) 

hTen 

KeyAscii=0 

EndIf 

End Sub 

5 运行 

将所编写好的程序进行保存,同时生成为可执行文件。 

然后将这个文件打包成一个小软件,这样就可将打包好的文 

件安装到任何一台计算机上都可运行了。 

启动此倒计时程序时可按活动要求输入所用倒计时时间, 

运行的界面如图l一图2所示。 

图1开始界面 

图2最后10秒计时 

6 结语 

利用VB制作的可设定时间该倒计时器基本上能应用于学 

校组织的各项活动中去。其最大的特点就是它可自定义、可 

重复输入多次使用。但同时也有一些不足需要改进的地方, 

(下转到59页) 

39— 

DATABASE AND INF0RMAT10N MANAGEMENT 

3:FileTimeToLoca leTime(WFD.ftLastWriteTime, 

数据库与信息管理 

if(not fileexists(DestFile))or needbackup then 

if copyfile(pchar(SourceFile),pchar(DestFile),false) 

hen t

FileTime); 

end; 

//FileTimeToDosDateTime函数把结构中64位的文件时 

,,间转换成MS—DOS格式的日期和时问值FileTimeTo— 

DosDateTime(FileTime,LongRec(DPT).HI,LongRec 

//(DP'T).LO); 

result:=l|}备份成功 

else result:=一1;,,备份失败 

end; 

exports 

,,把MS—DOS格式的日期和时间值再次转换成TDate 

//Time类型的值返回 

Result:=FileD ̄eToDateTime(DFr); 

end; 

Backup; 

begin 

end. 

把编译后生成的BackupIT.DLL复制到Windows系统的 

end; 

f 菱函数实现文件的智能备份,参数两个:源文件和目 

System32文件夹下,就可以调用了。 

,,标文件。 

3 调用智能备份函数 

l 

源文件和目标文件名(可包含所在路径)作为参数由调 

function Backup(SourceFile,DestFile:PChar):integer; 

用者给出,假设源文件位于程序所在文件夹的data子目录下, 

Var 

目标文件存放在DAxsglbackup下的以系统日期命名的目录下。 

datel,date2:TDatetime; 

implementation 

needBackup:boOlean; 

{SR .dfml 

destPath:string; 

f/,夕 部声明必须和DLL中的参数列表一致,否则会运 

begin 

}婀时错误 

needbackup:=false; 

l 

if not fileexists(Sourcefile)then 

function Backup(SourceFile,DestFile:PChar):Integer;exter- 

begin 

nal"BackuplT.dn : 

result:=一2;{,/源文件不存在 

procedure TForm1.ButtonlClick(Sender:TObject); 

) 

Var 

exit; SourceFile,DestFile:string; 

end begin 

else datel:=GetFileLastAccessTime(SourceFile,3); 

,/源文件路径以及文件名 

,,获得文件最后修改时间 

SourceFile:=ExtractFilePath(Application.ExeName)+ da- 

艏先判断目标文件路径是否已经存在,若已经存在证 

ta +" ̄exercise.mdb : 

,/明目标路径是合法的 

,,目标文件路径以及文件名 

/,若不存在就创建 

DestFile:='DAxsglbackup\ +DateToStr(Date)+'kexercise. 

destPath:=ExtractFileDir(DestFile); 

mdb ; 

if not directoryexists(destPath)then 

case Backup(PChar(SourceFile),PChar(DestFile))of 

{,,可一次建立多级目录J 

3:Form1.caption:= 目标文件路径错误 ; 

if not forceDirectories(DestPath)then 

2:Form1.caption:= 源文件不存在 : 

begin 

l:Formi.caption:= 备份失败,请检查目标文件名! : 

result:=一3;f如创建失败则给出的目标文件路径有错误} 

O:Form1.caption:= 无需备份 ; 

exit; 

l:Form1.caption:= 备份成功 : 

end; 

end; 

{,,如果目标文件已经存在,则比较文件最后修改时间l 

end; 

if ifleexists(DestFile)then 

4 结语 

begin 

该智能备份函数既可以在Delphi中直接定义后调用,也 

date2:=GetFileLastAccessTime(DestFile,3); 

可以写成DLL调用或供其他语言调用。其好处是通过比较数 

if datel>date2 then needbackup:=true 

else result:-0; 

据文件的最后修改时间来判断是否需要备份,避免了盲目备 

,,目标文件更新或最后修改时间相同则无需备份 

份,提高了备份效率。代码在Windows XP+Delphi7.0下调试 

end; 

通过。 

(上接第39页) 

例如可以在程序中添加多媒体控件来制作更加人性化的报警 疆师范大学学报(自然科学版),2007,26(3):118. 

器等,所以本软件还有待于进一步完善。 [2】宋哨兵.面向任务的Visual Basic程序设计教程.北京:清 

参考文献 华大学出版社,2010. 

[11胡晓娟,王兰.利用VB实现可重复使用的倒计时器.新 】

59— 


本文标签: 时间 倒计时 文件 程序