vb闹钟设计.docx

上传人:b****7 文档编号:10592120 上传时间:2023-02-21 格式:DOCX 页数:24 大小:354.85KB
下载 相关 举报
vb闹钟设计.docx_第1页
第1页 / 共24页
vb闹钟设计.docx_第2页
第2页 / 共24页
vb闹钟设计.docx_第3页
第3页 / 共24页
vb闹钟设计.docx_第4页
第4页 / 共24页
vb闹钟设计.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

vb闹钟设计.docx

《vb闹钟设计.docx》由会员分享,可在线阅读,更多相关《vb闹钟设计.docx(24页珍藏版)》请在冰豆网上搜索。

vb闹钟设计.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1