VB编写漂亮的时钟
- 格式:doc
- 大小:15.50 KB
- 文档页数:3
VB可视化程序设计实例——小时钟本例专门针对程序设计初学者而设计,尤其适合第一次接触VB的学生学习。
通过用VB来设计如图3.39所示的时钟程序,初步感受一下可视化和面向对象的程序设计过程。
图3.39 时钟程序运行效果小时钟程序中包含窗体控件、标签控件和计时器控件等3个控件。
窗体控件是小时钟程序运行时的窗口,标题栏上的标题是“时钟”,在右上角有最小化、最大化和关闭按钮。
标签控件可以用来显示文本,本例中用来显示时间,如“9:48:57”。
计时器控件每秒一次把计算机的当前系统时间显示到标签控件中,使得小时钟不停地运行。
Array启动VB,首先显示“新建工程”对话框(图3.40),在选择“新建”选项卡中的“标准EXE”项后,单击“打开”按钮,进入VB编程环境,如图3.41所示。
图3.40 “新建工程”对话框图3.41 VB 可视化编程环境 除了标题栏、菜单栏和标准工具栏外,编程环境中还有工具箱、窗体和属性等窗口。
双击工具箱(图3.42)中的标签控件,在窗体Form1中放置可以显示文本信息的标签控件Label1,见图3.43。
时钟的时、分和秒以后就显示在Label1中。
拖曳Label1可以移动它,拖曳它的八个控制点,可以改变它的大小。
图3.42 工具箱 图3.43 label1控件 图3.44 计时器控件双击工具箱中的计时器控件,在窗体Form1中放置计时器控件Timer1,见图3.44。
计时器控件以一定的时间周期,调用一个事件。
计时器控件只有在设计阶段出现在窗体上,程序运行时是不可见的,它的位置和大小无关紧要。
到目前为止,已经建立了窗体Form1、标签控件Label1和计时器控件Timer1等3个对象。
下面,将设置它们的属性。
窗体窗口图3.45 窗体Form1属性图3.46 窗体Form1 单击窗体Form1,属性窗口中出现Form1的属性,见图3.45。
在Caption(标题)属性内,输入“时钟”,Form1的标题栏就显示“时钟”,见图3.46。
目录摘要............................................................... 错误!未定义书签。
第1章概述. (1)1.1 引言 (1)1.2 设计平台 (1)第2章开发工具简介 (2)2.1 VisualBasic6.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 引言visual basic继承了basic语言易学易用的特点,特别适合于初学者学习windows系统编程。
随着21世纪信息社会的到来,计算机在人们的工作和生活中的深入,要求我们越来越多地与计算机打交道,为了用户更加方便的,更加有舒适的心情,设计出一个比较舒心的时钟显示。
1.2 设计平台VB全称Visual Basic,它是以Basic语言作为其基本语言的一种可视化编程工具。
它继承了basic语言易学易用的特点,特别适合于初学者学习windows系统编程。
随着21世纪信息社会的到来,计算机在人们的工作和生活中的深入,要求我们越来越多地与计算机打交道,为了使用户更加地使用舒心。
通过这学期来Visual Basic的学习,我初步掌握了Visual Basic语言的最基本的知识,于是在张老师的指导下动手用Visual Basic 编写了这款时钟软件。
第2章开发工具简介2.1 VisualBasic6.0简介Visual Basic 是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发 Windows 环境下的各类应用程序。
它简单易学、效率高,且功能强大。
在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口(API)函数,动态链接库(DLL)、对象的链接与嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发Windows环境下功能强大、图形界面丰富的应用软件系统。
目录摘要 (iii)第1章概述 (1)1.1 引言 (1)1.2 设计平台 (1)第2章开发工具简介 (2)2.1 VisualBasic6.0简介 (2)2.2 运用的控件和主要对象 (3)3.1主窗体 (4)Private Sub qiyong_Click() (5)3.2时钟窗体 (6)3.3屏幕保护窗体 (10)第4章结束语 (12)参考文献 (13)摘要Visual Basic(VB)是一种由微软公司开发的包含协助开发环境的事件驱动编程语言,从任何标准来说,VB都是世界上使用人数最多的语言。
它是一种面向对象的可视化程序设计语言,提供了集界面设计、编写代码和程序调试等于一体的集成开发环境。
VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。
程序员可以轻松的使用VB提供的组件快速建立一个应用程序。
本文通过动画式时钟的设计与实现,,同时说明了在VB环境下开发应用程序的思路和步骤。
关键词:程序设计;时钟;Visual Basic6.0;界面第1章概述1.1 引言visual basic继承了basic语言易学易用的特点,特别适合于初学者学习windows 系统编程。
随着21世纪信息社会的到来,计算机在人们的工作和生活中的深入,要求我们越来越多地与计算机打交道,为了用户更加方便的,更加有舒适的心情,设计出一个比较舒心的时钟显示。
1.2 设计平台VB全称Visual Basic,它是以Basic语言作为其基本语言的一种可视化编程工具。
它继承了basic语言易学易用的特点,特别适合于初学者学习windows系统编程。
随着21世纪信息社会的到来,计算机在人们的工作和生活中的深入,要求我们越来越多地与计算机打交道,为了使用户更加地使用舒心。
第2章开发工具简介2.1 VisualBasic6.0简介Visual Basic 是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows 环境下的各类应用程序。
实例3 动画电子钟表“动画电子钟表”程序运行后,一个不断随系统时间变化的电子钟表从窗体的左边水平向右移动,当钟表移出窗体后,又从窗体左边移入窗体,如此不断循环播放。
程序运行中的两个画面如图所示。
1.设置对象的属性(1)创建4个对象,1个窗体对象,名字为“Form1”,3个时钟对象,名字依次为“Timerl”、“Tim e r2”和“Timer3”,3个标签对象,名字为“Label1”、“Label2”和“Labe13”。
(2)“Form1”窗体对象的属性设置:Caption属性为“动画电子钟表”;Picrure属性为一幅风景图象;StartUpPosition属性设置为"2-屏幕中间”:Width属性为5505。
(3)“Label1”标签对象的属性设置:Caption属性为“12:12:12”:BackStyle属性为0,表示文字背景透明:ForeColor属性为红色:字体属性设置为宋体,大小为小初,字形为粗体,Left属性为-2700(保证标签位于左边,并只显示一小部分)。
该标签用来显示时钟。
(4)“Labe12”标签对象的属性设置:Caption属性为“北京时间”,BackStyle属性为0,表示文字背景透明,Forecolor属性为红色;字体属性设置为隶书,大小为小初,字形为粗体,Left属性为1320(保证标签居中)。
该标签用来显示“北京时间”标题。
(5)“Labe13”标签对象的属性设置:Caption属性值为空值;BackStyle 属性为0,表示文字背景透明;ForeColor属性为黄色:字体属性设置为宋体,大小为小一,字形为粗体,Left属性为1680(保证标签居中)。
该标签用来显示日期。
(6)“Timer1”时钟对象用来与“Label1”标签对象共同产生数字钟效果。
它的Interval属性值为1000(即1秒),表示触发计时事件的时间间隔为1秒:Enabled属性值为True,表示时钟对象计时有效。
用VB制作一个动态时钟(转载)[原理]使用了LINE控件用来表示指针,根据粗细不同,分别为时、分、秒针,每个LINE都有2个点的坐标,一个点是原点,也就是表盘的最中心点,另一个点根据当前的时间计算从而决定。
然后通过TIMER控件,每隔1秒计算一次进行刷新,即可以实现。
[实现]一、新建立一个工程,在默认的窗体上添加以下三个LINE控件和一个TIMER控件,添加以下界面如下:二、在代码最上面建立全局变量,用于保存时钟原点:Dim x0 As SingleDim y0 As Single三、在窗体的FORM_LOAD事件中添加如下代码:Private Sub Form_Load()With Form1.Width = 3000.Height = 3100.BackColor = vbBlack.Caption = '动态时钟'End Withx0 = 1430y0 = 1290With Line1.X1 = x0.Y1 = y0End WithWith Line2.X1 = x0.Y1 = y0End WithWith Line3.X1 = x0.Y1 = y0End WithLine1.Visible = FalseLine2.Visible = FalseLine3.Visible = FalseLine1.BorderColor = vbRedLine2.BorderColor = vbRedLine3.BorderColor = vbRedEnd Sub四、在Timer的Timer事件中添加如下代码Private Sub Timer1_Timer()Text1.Text = DateLine1.Visible = TrueLine2.Visible = TrueLine3.Visible = TrueDim R0 As IntegerR0 = 1200R1 = 1000: R2 = 850: R3 = 600'画12个大圈子For i = 1 To 12X1 = x0 + R0 * Sin((i * 30) * 3.1415926 / 180)Y1 = y0 + R0 * Cos((i * 30) * 3.1415926 / 180)Circle (X1, Y1), 30, vbBlueNext i'画60个小圈子For i = 1 To 60X1 = x0 + R0 * Sin((i * 6) * 3.1415926 / 180)Y1 = y0 + R0 * Cos((i * 6) * 3.1415926 / 180)Circle (X1, Y1), 10, vbBlueNext i'秒针With Line1.X2 = x0 - R3 * Sin(-(Hour(Now) * 30 + Minute(Now) * 0.5) * 3.1415926 / 180).Y2 = y0 - R3 * Cos(-(Hour(Now) * 30 + Minute(Now) * 0.5) * 3.1415926 / 180)End With'分针With Line2.X2 = x0 - R2 * Sin(-(Minute(Now) * 6) * 3.1415926 / 180).Y2 = y0 - R2 * Cos(-(Minute(Now) * 6) * 3.1415926 / 180)End With'时针With Line3.X2 = x0 - R1 * Sin(-(Second(Now) * 6) * 3.1415926 / 180) .Y2 = y0 - R1 * Cos(-(Second(Now) * 6) * 3.1415926 / 180) End WithCircle (x0, y0), 20, vbWhiteEnd SubOK,至此大功告成,点击F5,就可以看到运行结果了。
VBA制作简单的闹钟
一直想在电脑上放一个闹钟,可以定时提醒我该干什么了,网上也许有,但我想用程序做一个。
第一步,编写一个在固定时间弹出窗口的程序。
这个很简单,一个时间函数,一个消息框,OK。
第二步,让程序引用时间,这样就可以随时更改时间了,才会实用。
这一步稍微复杂了一点,但是也很快解决了。
第三步,让程序中的消息也引用页面信息,有了上一步这个就简单了。
程序完成。
执行一下,成功。
没想到这么简单,让我拖了许久。
A列B列C列
时间事件详细信息
23:14 起床该起床了!
程序:
Sub 时间提醒()
Application.OnTime TimeValue(Range(''A2'').Text), ''显示信息''
End Sub
Sub 显示信息()
msg = MsgBox(Range(''B2'').Text, vbInformation, Range(''C2'').T ext)
End Sub
不能发送附件,只好连代码也写到这里。
这是第一版,以后会继续完善,大家有什么要求?。
下面是这个时钟屏保的界面做这个用到的控件只有一个计时器(Timer)和一个标签(Label)Public Class Form1Dim xc As Integer '时钟的中心点横坐标Dim yc As Integer '时钟的中心点纵坐标Dim OffsetX As Integer = 15 '滚动字幕初始位置Dim Offset As Integer = 15 '滚动字幕的偏移量Dim x1, y1 As IntegerDim x2, y2 As IntegerDim i As Integer = 0Dim n As Integer = 0Dim ss, mm, hh As Single '当前的时、分、秒数值Dim whattime As Date '时间Dim hlength As Integer = 100 '时针的长度Dim mlength As Integer = 120 '分针的长度Dim slength As Integer = 150 '秒针的长度Dim spen As New Pen(Color.Red, 2) '秒针的画笔Dim mpen As New Pen(Color.Gold, 3) '分针的画笔Dim hpen As New Pen(Color.Chocolate, 4) '时针的画笔Dim mypen As New Pen(Color.Blue, 3)Dim mbrush As New SolidBrush(Color.Green)Dim mfont As Font = Me.FontDim x3, y3, x4, y4, x5, y5, x6, y6 As Integer'时、分、秒三条指针的末端坐标Dim R As Integer = 200Dim L As Integer = 40Dim s As Integer = 25Dim qq As Integer'下面这句是使得时钟的中心点的位置在屏幕的中心Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Loadxc = Me.Width / 2yc = Me.Height / 2End Sub'下面是计时器的代码Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick'在计时器里的代码主要分两部分,一部分是上面的滚动字幕的代码,另一部分则是生成时钟图案的代码Dim mfont As Font = New Font(New FontFamily("黑体"), 20)'两个IF语句使得字幕可以在顶部左右滚动If (Label1.Left < 0) ThenOffsetX = +OffsetEnd IfIf (Label1.Right >= Me.Width) ThenOffsetX = -OffsetEnd IfLabel1.Left = Label1.Left + OffsetXDim mystr As String '声明一个用于显示时间的字符串mystr = Format(Now(), "long date") + Format(Now(), "long time") '把当前时间赋给字符串 Label1.Text = "我的屏保程序" + mystr'下面这段可以使得字幕的颜色可以不断地变换Dim fontcolor() As Color = {Color.Red, Color.Crimson, Color.Cyan, Color.Brown,Color.BlueViolet}Label1.ForeColor = fontcolor(n)If n = 0 Thenn = 1ElseIf n = 1 Thenn = 2ElseIf n = 2 Thenn = 3ElseIf n = 3 Thenn = 4Elsen = 0End If'下面开始“画”时钟Dim g As Graphics = Me.CreateGraphics() '先声明一个画板g = Me.CreateGraphicsg.Clear(Me.BackColor) '刷新画面' Me.Refresh()'下面这段“画”数字和数字旁的那些小线段的代码For i = 0 To 11x1 = CInt(xc + R * Math.Cos(i * 3.14 / 6))y1 = CInt(yc + R * Math.Sin(i * 3.14 / 6))x2 = CInt(xc + (R + L) * Math.Cos(i * 3.14 / 6))y2 = CInt(yc + (R + L) * Math.Sin(i * 3.14 / 6))g.DrawLine(mypen, x1, y1, x2, y2)If i <= 9 Theng.DrawString(i + 3, mfont, mbrush, CInt(xc + (R + L + s) * Math.Cos(i * 3.14 / 6)), CInt(yc + (R + L + s) * Math.Sin(i * 3.14 / 6)))Else : g.DrawString(i - 9, mfont, mbrush, xc + (R + L + s) * Math.Cos(i * 3.14 / 6), yc + (R + L + s) * Math.Sin(i * 3.14 / 6))End If'下面是画三条指针的代码Nextwhattime = DateTime.Nowss = whattime.Secondmm = whattime.Minutehh = whattime.Hourx3 = xc + slength * Math.Cos(1.5 * 3.14 + ss * 3.14 / 30)y3 = yc + slength * Math.Sin(1.5 * 3.14 + ss * 3.14 / 30)g.DrawLine(spen, xc, yc, x3, y3)mm = mm + ss / 60x4 = xc + mlength * Math.Cos(1.5 * 3.14 + mm * 3.14 / 30)y4 = yc + mlength * Math.Sin(1.5 * 3.14 + mm * 3.14 / 30)g.DrawLine(mpen, xc, yc, x4, y4)hh = hh + mm / 60x5 = xc + hlength * Math.Cos(1.5 * 3.14 + hh * 3.14 / 6)y5 = yc + hlength * Math.Sin(1.5 * 3.14 + hh * 3.14 / 6)g.DrawLine(hpen, xc, yc, x5, y5)'下面是“画”的外圈的代码qq = whattime.Secondx6 = xc + slength * Math.Cos(2.5 * 3.14 + qq * 3.14 / 30)y6 = yc + slength * Math.Sin(2.5 * 3.14 + qq * 3.14 / 30)Dim p As Graphics = CreateGraphics()Dim jpen As New Pen(Color.Coral)jpen.Width = 5p.DrawEllipse(jpen, x6, y6, 30, 30)Dim vpen As New Pen(Color.Blue)vpen.Width = 20g.DrawEllipse(vpen, xc - 280, yc - 280, 600, 600)End SubPrivate Sub Form1_MouseClick(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs) Handles Me.MouseClickEndEnd SubPrivate Sub Form1_MouseMove(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs) Handles Me.MouseMoveEnd Sub End Class。
ExcelVBA实现电⼦钟来源:Dim Runtime As Date'定义时间变量Sub RunTimer()Runtime = Now() + TimeValue("00:00:02") '时间显⽰为增加1秒Application.OnTime Runtime, "my_Procedure"'在这个指定的时间执⾏下⾯的过程End SubSub my_Procedure()Range("A1") = Format(Time, "h:mm:ss") '在指定的表格显⽰系统当前的时间(Time)RunTimer '回头继续执⾏上⾯的程序End SubOnTime函数指在某⼀具体时间执⾏某⼀过程,即过程my_Procedure。
执⾏my_Procedure的时候,就显⽰现在的时间,然后⽴即执⾏Runtime过程,接着就循环下去,效果如下图所⽰:(颜⾊⼤⼩可以另外设置)涉及到的相关概念:1. :表⽰从 0001 年 1 ⽉ 1 ⽇到 9999 年 12 ⽉ 31 ⽇的⽇期以及从午夜 12:00:00 到晚上 11:59:59.9999999 的时间。
Date 的默认值为0001 年 1 ⽉ 1 ⽇的 0:00:00(午夜)。
2. :以 datetime 格式返回当前⽇期和时间。
3. Time 函数:返回系统当前的时间。
4. :将⽂本格式的时间转换为⽇期时间格式的时间。
5. :安排⼀个过程在将来的特定时间运⾏(既可以是具体指定的某个时间,也可以是指定的⼀段时间之后)。
OnTime(EarliestTime, Procedure, LatestTime, Schedule) 后⾯两个为可选参数!Application.OnTime Runtime, "my_Procedure"单独⼀⾏的⽅法不能加括号,要是涉及到赋值操作,则要加括号!6. :没有参数的时候指⼯作表中所有的单元格,带⼀个参数则表⽰第⼀⾏的第⼏个单元格,带两个参数,则分别表⽰⾏和列!With Cells(2, 2).Font.Size = 20.Color = RGB(255, 0, 0).Name = "Arial Black".FontStyle = "Bold Italic"End With7. :它代表⼀个单元格或单元格区域。
1、打开VB,VB为你添加了一个窗体。
(一般新建的工程都会有一个窗体,不用添加)主要属性为:Caption:钟表controlBox:False width:4800 height:5800 startUpPosition:2-屏幕中心2、再在窗体上放一个图形控件。
Height:2940 left:600 top:375 width:3400 borderwidth:3 shape:3-circleFillstyle:0-Solid fillcolor:选一个你喜欢的颜色。
3、再在窗体上添加三条直线,直线的起点放在图形的图心上。
主要属性如下:(三条线都如下设置)x1:2300 Y1:1845 X2 与Y2可以任意设置,BorderColor:选一个你喜欢的色BorderWidth:34、添加四个标签,分别修改其Caption为“3”、“6”、“9”、“12”,同时修改这四个标签的BackStyle属性为0-Transparent,并且把这四个标签移动到圆的最右,最下,最左,最上四个位置。
5、添加一个文本框。
主要属性为:Left:900 height:555 top:4215 width:3240至此,我们的钟表程序界面设置完成。
如下图7、现在让表的指针动起来。
在窗体上添加一个时间控件。
修改其interval属性为100,注:这个数值的单位是毫秒,单位很小,1000毫秒才等于1秒。
但是在VB中这不足以用来记时,时为程序在运行的时候影响了记时的准确性。
所以,我们要准确的表达时间的话,要用到系统时间,这要做用一个函数,就是NOW()。
这个函数的返回值就是当前的系统时间。
8、让指针动起来,就是要在时间变化的时候修改指针不在圆心点的坐标。
我们先来分析秒针:我们知道,一周角为360度,表示60秒,那么每一秒需要用6度来表示,那么,当时间走到S秒的时候,秒针走过6*S度也就是:6*S*3.1415926/180弧度(注,一周角为2*3.14159弧度)。
然后在其中放一个timer控件
再就是一个直线控件数组
注意要把imagebox中的stretch属性改为true,
直线控件数组是14个,要注意
下面是我和程序代码,有一些注解的
希望能对大家有帮助
Private Sub Form_Load() '设置窗体和计时器参数
= 100 '设置计时器事件间隔是1/10秒
Width = 4000
Height = 4000
Left = \ 2 - 2000
Top = - Height) \ 2
End Sub
Private Sub Form_Resize() '启动时和改变窗体时设置刻度和指针 Dim i, angle
For i = 0 To 13
Line1(i).Visible = True
Line1(i).BorderWidth = 4
If i = 0 Or i > 12 Then
Line1(i).BorderColor = RGB(0, 0, 128)
Else
Line1(i).BorderColor = RGB(0, 128, 0)
End If
Next i
Line1(12).BorderColor = RGB(128, 256, 128)
Line1(9).BorderColor = RGB(256, 128, 128)
Line1(6).BorderColor = RGB(128, 0, 256)
Line1(3).BorderColor = RGB(0, 0, 255)
Line1(13).BorderColor = RGB(255, 0, 255)
Line1(0).BorderWidth = 5 '时针的粗细
Line1(14).BorderWidth = 2 '分针的粗细
Line1(i).BorderColor = RGB(256, 0, 0)
For i = 0 To 14
Scale (-1, 1)-(1, -1) '画出表盘12个点和时,分.秒15条线
angle = i * 2 * Atn(1) / 3
Line1(i).X1 = * Cos(angle)
Line1(i).Y1 = * Sin(angle)
Line1(i).X2 = Cos(angle)
Line1(i).Y2 = Sin(angle)
Next i
End Sub
Private Sub Timer1_Timer()
Const hh = 0
Const mh = 13
Const sh = 14
Dim angle
Static ls
If Second(Now) = ls Then Exit Sub '机器时钟停止程序退出
ls = Second(Now)
angle = * (15 - (Hour(Now) + Minute(Now) / 60)) '时钟转动设置 Line1(hh).X1 = 0
Line1(hh).Y1 = 0
Line1(hh).X2 = * Cos(angle)
Line1(hh).Y2 = * Sin(angle)
angle = * (75 - (Minute(Now) + Second(Now) / 60)) '分钟转动设置 Line1(mh).X1 = 0
Line1(mh).Y1 = 0
Line1(mh).X2 = * Cos(angle)
Line1(mh).Y2 = * Sin(angle)
angle = * (75 - Second(Now) / 5) '秒钟转动设置
Line1(sh).X1 = 0
Line1(sh).Y1 = 0
Line1(sh).X2 = * Cos(angle)
Line1(sh).Y2 = * Sin(angle)
= Str(Now()) '窗口显示日期和时间
End Sub。