vb闹钟设计.docx
- 文档编号:10592120
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:24
- 大小:354.85KB
vb闹钟设计.docx
《vb闹钟设计.docx》由会员分享,可在线阅读,更多相关《vb闹钟设计.docx(24页珍藏版)》请在冰豆网上搜索。
vb闹钟设计
目录
摘要i
第1章概述1
1.1引言1
1.2设计平台1
第2章开发工具简介2
2.1VisualBasic6.0简介2
2.2运用的控件和主要对象2
第3章设计实现6
3.1画时钟表盘上的所有直线元素6
3.2修改时针的形状6
3.3计时器的Interval(间距)属性设置6
3.4软件代码7
第4章总结16
4.1结论16
4.2心得体会16
参考文献17
第1章概述
1.1引言
visualbasic继承了basic语言易学易用的特点,特别适合于初学者学习windows系统编程。
随着21世纪信息社会的到来,计算机在人们的工作和生活中的深入,要求我们越来越多地与计算机打交道,为了用户更加方便的,更加有舒适的心情,设计出一个比较舒心的时钟显示。
1.2设计平台
VB全称VisualBasic,它是以Basic语言作为其基本语言的一种可视化编程工具。
它继承了basic语言易学易用的特点,特别适合于初学者学习windows系统编程。
随着21世纪信息社会的到来,计算机在人们的工作和生活中的深入,要求我们越来越多地与计算机打交道,为了使用户更加地使用舒心。
通过这学期来VisualBasic的学习,我初步掌握了VisualBasic语言的最基本的知识,于是在张老师的指导下动手用VisualBasic编写了这款时钟软件。
第2章开发工具简介
2.1VisualBasic6.0简介
VisualBasic是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows环境下的各类应用程序。
它简单易学、效率高,且功能强大。
在VisualBasic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口(API)函数,动态链接库(DLL)、对象的链接与嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发Windows环境下功能强大、图形界面丰富的应用软件系统。
2.2运用的控件和主要对象
我们在设计过程中主要用到的控件有:
Form,Commandbutton,MsgBox,Label,Frame,PictureBox等控件。
1、窗体(Form)
窗体就是平时所说的窗口,它是VB编程中最常见的对象,也是程序设计的基础。
各种控件对象必须建立在窗体上,即窗体是所有控件的容器。
一个窗体对应一个窗体模块。
2、命令按钮(Commandbutton)
命令按钮是VB应用程序中使用最多的控件之一,它常常用来接受用户的操作信息,激发相应的事件过程,是用户与程序交互的最简便的方法。
3、消息框(MsgBox)
在Windows中,如果操作失误,通常会在屏幕上显示一个对话框,提示用户进行选择,然后系统根据选择确定其后的操作。
VB提供了MsgBox函数就可以实现此功能,它可以向用户传送信息,并可以接收用户在对话框上的选择,以次作为程序继续执行的依据。
4、标签(Label)
VB提供的标签控件只能显示文本,而不能对文本进行编辑。
标签通常用于标注本身不具有Caption属性的控件。
5、框架(Frame)
框架主要用做控件的容器,也用于修饰界面。
6、图片框(PictureBox)
该控件可以用来显示图象,包括位图文件、图标文件、光标文件、元文件、增强的元文件、JPEG文件、GIF文件。
7、Timer控件
Windows应用程序中常常要用到时间控制的功能,如在程序界面上显示当前时间,或者每隔多长时间触发一个事件,等等。
而VisualBasic中的Timer(时间)控制器就是专门解决这方面问题的控件。
选中时钟控制器,将鼠标移到界面设计区,在窗体中拖出一个矩形就可以创建一个Timer控件了。
跟其他控件不同的是,无论你绘制的矩形有多大,Timer控件的大小都不会变外,Timer控件只有在程序设计过程中看得见,在程序运行时是看不见的Timer事件:
当Timer控件设置为有效时,计时总是从其Interval属性的设置值开始,每当计时时间到达时产生Timer事件,可以在该事件过程中编写代码,以高诉VisualBasic在每次计时时间到时该做什么。
(1)Timer控件的属性:
Timer控件可以使用Name属性与Enabled属性,但最重要的是Interval即时间间隔属性。
Interval属性决定了时钟事件之间的间隔,以毫秒为单位,取值范围为0~65535,因此其最大时间间隔不能超过65秒,即一分钟多一点的时间。
如果把Interval属性设置为1000,则表示每秒钟触发一个Timer事件。
其语法格式:
Timer.Interval=X,其中,X代表具体的时间间隔。
(2)Timer控件的Timer(定时)事件:
当一个Timer控件经过预定的时间间隔,将激发计时器的Timer事件。
使用Tim
标签控件(Label)的主要事件:
所谓的事件,其实就是用户对应用程序的操作,如第一章中用鼠标点击命令按钮触发的Click事件。
事件的作用在于触发程序的执行,如第一章中的Click事件改变了标签控件的Caption属性。
标签控件的主要作用在于显示文本信息,但也支持一些为数不多的事件。
I、Click事件(鼠标单击):
用鼠标点击标签时触发的事件,如改变标签的字体属性:
PrivateSubLblShow_Click()
LblShow.FontName="隶书"
EndSub
II、DbClick事件(鼠标双击):
鼠标双击引发的事件,如改变标签的可见性:
PrivateSubLblShow_DbClick()
LblShow.Visible=False
EndSub
(3)文件操作控件
在一个应用程序中,对文件的处理是一个比较常用的操作,如打开文件、保存文件,等等。
VisualBasic提供了三个控件对磁盘文件夹与文件进行显示与操作,它们分别是:
DriveListBox(磁盘列表框)控件、DirListBox(文件夹列表框)控件,以及FileListBox(文件列表框)控件。
事件可以完成许多实用功能,如显示系统时钟、制作动画,等等
(4)三个控件的连接:
DriveListBox(磁盘列表框)控件
DirListBox(文件夹列表框)控件
FileListBox(文件列表框)控件
I、在程序中,它们却是互不关连的,并不是只要在窗体中创建了它们,然后对某个控件(如磁盘列表框)进行操作,其他控件就会自动显示相应的磁盘下的文件,这需要用程序进行实现。
将磁盘列表框的操作赋值给文件夹列表框的Path属性,在磁盘列表框的Change事件中输入如下代码:
PrivateSubDrive1_Change()
Dir1.Path=Drive1.Drive
EndSub、
II、对文件夹列表框控件进行的操作,直接影响文件列表框所显示的内容:
PrivateSubDir1_Change()
File1.Path=Dir1.Path
8、Label控件
任何一个VB程序都是由操作界面及与之相应的程序代码组成,而操作界面则是由诸如“命令按钮控件”、“标签控件”等控件以及窗体共同组成。
从本章开始,我们进入控件的学习过程。
Label(标签控件)是图形控件,主要作用在于显示文字信息,如大家比较熟悉的程序安装界面:
在某个软件安装过程中,常常会显示一些帮助信息或与产品相关的介绍信息,而这些,大多是用标签控件制成的。
与以后我们要学到的文本框控件(TextBox)不同的是,标签控件显示的文字不能直接进行修改,要修改的话只能在设计阶段进行;文本框既可以用来显示文本,还能够在文本框中输入文本。
在VisualBasic工具箱中,标签控件的图标如图一所示。
标签的默认名称(Name)和标题(Caption)为LabelX(X为1、2、3,等等),规范的命名方式为:
LblX(X为自己定义的詞,如LblShow、LblRed,等等)
(1)标签控件的主要属性:
I、Caption(标题)属性:
此属性用来设置在标签上显示的文本信息,可以在创建界面时设置,也可以在程序中改变文本信息,如第一章的例子中,通过点击按钮改变标签显示的字样。
如果要在程序中修改标题属性,代码规则如下:
标签名称.Caption="欲显示的文本"
LblShow.Caption="跟我来学VB神童教程"
但是请注意,上面的代码应该写入供触发的控件对应的程序代码区。
II、BorderStyle(边框)属性:
本属性用来设置标签的边框类型,有两种值可选:
0,代表标签无边框;1,代表标签有边框,并且具有三维效果,如图二显示的两个标签:
BorderStyle属性可以在设计界面时指定
标签名.BorderStyle=0/1(0或1,两者取一)
击一下,标签有边框,再点一下,标签边框消除,再点一下,边框又出现,以此类推。
回答
Ⅲ、Font(字体)属性:
本属性用来设置标签显示的字体,既可以在创建界面时设定,也可以在程序中改变。
在创建界面时设定
在图四的设置界面中,除了可以选择字体,还可以设置显示文字是否为粗体、斜体、下划等。
在程序中改变Font属性,程序代码书写规则如下:
字体改变:
标签名.FontName="字体类型",其中,“字体类型”可以是中文,如“宋体”、“隶书”;也可以是英文名,如“Arial”、“TimesNewRoman”,等等,不过,这些字体名称必须是电脑上有的。
字体大小改变:
标签名.FontSize=X,其中,X是阿拉伯数字,代表字体是几号字。
如:
LblShow.FontSize=11。
粗体(FontBold)、斜体(FontItalic)、下划线(FontUnderline)、删除线(FontStrikethru)属性的设置值是代表真/假的逻辑判断值True/False,如下:
LblShow.FontBold=True/False
LblShow.FontItalic=True/False
Ⅳ、Alignment(对齐)属性:
此属性用来设置标签上显示的文本的对齐方式,分别是:
左对齐,0;右对齐,1;居中显示,2。
可以在界面设置时设定,
也可以在程序中改变,代码如下:
标签名.Alignment=0/1/2
第3章设计实现
3.1画时钟表盘上的所有直线元素
用Load命令建立原始Line控制的14个拷贝(因为表盘有12个点和时、分、秒共15个Line),该控制数组每一个实例的端点坐标属性设置为每条线在时钟表盘上的适当位置。
这些拷贝中大多数只放置一次,而3个Line控制每秒钟更新一次,产生时钟指针移动的感觉。
在应用程序代码中并没有直接擦除任何一条线。
当我们改变每一个Line控制的端点时,每一根针在移动时擦除和重画的所有技术工作都由VB来处理。
3.2修改时针的形状
通过调整代码中的属性设置,可以改变时钟的形状。
例如:
通过改变每一个Line控制的Borderwidth属性设置,可以建立更细或更粗的线。
3.3计时器的Interval(间距)属性设置
计时器的Interval属性设置为100,即为1/10秒。
程序的编写与执行
(1)新建工程
先新建一个工程(工程类型为标准EXE),然后用“工具箱”中的工具加入一个Timer1(计时器)和line1(直线),其index(指针)分别设置为空和、0。
一、打开程序:
点击桌面上的VisualBasic图标,在弹出的如图一的窗中选择“创建标准EXE”按钮。
图3.1新建工程窗口
确定后的状态如下图。
图3.2创建的新工程
下图即为编辑时钟软件的工程窗口,可执行为一个“标准EXE”文件。
具体代码如下。
图3.3时钟编辑窗口
3.4软件代码
1、主程序代码
PrivateSubForm_Load()
CallPutWindowOnTop(Form1)
Calldrewfrm(Me.hWnd,App.Path+"\clockh.pfm")
closewave=False
Label1.Caption=Right(Format(Now,"yy-mm-dd"),2)
htoday=False
DimaAsInteger,bAsInteger,cAsInteger
DiminputdataAsString
OpenApp.Path+"\forever.dat"ForInputAs1
OnErrorResumeNext
DoWhileNotEOF
(1)
LineInput#1,inputdata
SelectCasetypetime(inputdata)
Case1
Clockf(a)=Mid$(inputdata,5)
a=a+1
Case3
Alertft(b)=Mid$(inputdata,5,5)
alertfms(b)=Mid$(inputdata,10)
b=b+1
Case4
IfMid$(inputdata,11,8)=Format(Now,"yy-mm-dd")Then
htoday=True
Alertot(c)=Mid$(inputdata,5,5)
alertoda(c)=Mid$(inputdata,11,8)
alertoms(c)=Mid$(inputdata,19)
c=c+1
EndIf
EndSelect
Loop
alc=c-1
Close#1
EndSub
PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
IfButton=2Then
PopupMenuMFile
ElseIfButton=1Then
DimretAsLong
ReleaseCapture
ret&=SendMessage(Me.hWnd,WM_SYSCOMMAND,SC_MOVE+HTCAPTION,0)
EndIf
EndSub
PrivateSubLabel1_MouseMove(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
Label1.ToolTipText=Format(Now,"yyyy年mm月dd日hh:
mm")
EndSub
PrivateSubMclwav_Click()
closewave=True
EndSub
PrivateSubOpenwave_Click()
closewave=False
EndSub
PrivateSubShowfrm_Click()
Form2.Show
Me.Hide
EndSub
PrivateSubsmall_Click()
Me.WindowState=1
EndSub
PrivateSubTimer1_Timer()
Calltimemove(Format(Time$,"hh:
mm:
ss"))
ts=ts+1
Ifts=5Then
Ifclosewave=FalseThen
k=App.Path+"\clock.wav"
l=&H1Or&H2
i=sndPlaySound(k,l)
EndIf
ts=0
EndIf
Fori=0To50
IfAlertft(i)=Format(Time$,"hh:
mm")Then
MsgBoxalertfms(i),vbOKOnly+vbInformation+vbApplicationModal,"每日定时提醒
Alertft(i)="hh:
mm"
EndIf
IfClockf(i)=Format(Time$,"hh:
mm")Then
Clockf(i)="hh:
mm"
ts=-10
k=App.Path+"\Cuckoo.wav"
l=&H1Or&H2
i=sndPlaySound(k,l)
ElseIfclockn(i)=Format(Time$,"hh:
mm")Then
clockn(i)="hh:
mm"
ts=-10
k=App.Path+"\Cuckoo.wav"
l=&H1Or&H2
i=sndPlaySound(k,l)
EndIf
Nexti
Ifhtoday=TrueThen
Fori=0Toalc
IfAlertot(i)=Format(Time$,"hh:
mm")Then
MsgBoxalertoms(i),vbOKOnly+vbInformation+vbApplicationModal,"提醒你"
Alertot(i)="hh:
mm"
EndIf
Nexti
EndIf
EndSub
图3.4时钟界面
2、时钟界面子程序
PrivateSubForm_Load()
CallPutWindowOnTop(Form2)
EndSub
PrivateSubPicture1_DblClick()
Form1.Show
UnloadMe
EndSub
PrivateSubPicture1_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
IfButton=1Then
DimretAsLong
ReleaseCapture
ret&=SendMessage(Me.hWnd,WM_SYSCOMMAND,SC_MOVE+HTCAPTION,0)
EndIf
EndSub
3、闹钟提醒设置
图3.4闹钟界面编辑窗口
闹钟设置窗口的程序如下:
DimforeverAsString,dAsInteger
PrivateSubAlerttxt_Click()
DimlsAsInteger
ls=Len(Alerttxt)
Alerttxt.SelStart=0
Alerttxt.SelLength=ls
EndSub
PrivateSubCommand1_Click()
UnloadMe
EndSub
PrivateSubCommand2_Click()
IfTimetxt<>""Then
DimworktxtAsString
IfOption1.Value=TrueThen
worktxt="闹铃"
Else
worktxt="提醒"
EndIf
IfOption3.Value=TrueThen
worktxt=worktxt+"每日"
Else
worktxt=worktxt+"今次"
EndIf
IfOption2.Value=TrueThen
IfOption4.Value=TrueThen
worktxt=worktxt+Timetxt+"#"+Datetxt+Alerttxt
b=True
Else
worktxt=worktxt+Timetxt+Alerttxt
EndIf
Else
worktxt=worktxt+Timetxt
EndIf
IfText1.Enabled=TrueThen
IfText1.Text<>""Then
Text1.Text=Text1.Text+vbCrLf+worktxt
Else
Text1.Text=worktxt
EndIf
OpenApp.Path+"\forever.dat"ForOutputAs1
Print#1,Text1.Text
Close#1
forever=Text1.Text
ElseIfText2.Enabled=TrueThen
IfText2<>""Then
Text2.Text=Text2.Text+vbCrLf+worktxt
Else
Text2.Text=worktxt
EndIf
EndIf
EndIf
EndSub
PrivateSubForm_Load()
DiminputdataAsString
OpenApp.Path+"\forever.dat"ForInputAs1
OnErrorResumeNext
LineInput#1,inputdata
forever=inputdata
DoWhileNotEOF
(1)
LineInput#1,inputdata
forever=forever+vbCrLf+inputdata
Loop
Close#1
DimslAsInteger
Ifclockn(0)<>""Then
Text2.Text="闹铃今次"+clockn(0)
EndIf
Forsl=1To50
Ifclockn(sl)<>""Then
Text2.Text=Text2.Text+vbCrLf+"闹铃今次"+clockn(sl)
EndIf
Nextsl
Text1.Text=forever
Option4.Value=True
Option2.Value=True
Text1.Enabled=True
Text2.Enabled=False
EndSub
PrivateSubForm_Unload(CancelAsInteger)
IfText1<>foreverThen
OpenApp.Path+"\forever.dat"ForOutputAs1
Print#1,Text1.Text
Close#1
EndIf
DimstartAsInteger,lastAsInteger
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vb 闹钟 设计