VB日历-课程设计报告

上传人:m**** 文档编号:549085218 上传时间:2022-12-15 格式:DOC 页数:24 大小:109.50KB
返回 下载 相关 举报
VB日历-课程设计报告_第1页
第1页 / 共24页
VB日历-课程设计报告_第2页
第2页 / 共24页
VB日历-课程设计报告_第3页
第3页 / 共24页
VB日历-课程设计报告_第4页
第4页 / 共24页
VB日历-课程设计报告_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《VB日历-课程设计报告》由会员分享,可在线阅读,更多相关《VB日历-课程设计报告(24页珍藏版)》请在金锄头文库上搜索。

1、.课程设计题目 电子台历所选题目:电子台历难度:两星级*知识点:(1)非矩形窗口;(2)动态数组;(3)配置文件的读写;(4)图片的应用;(5)控件数组;(6)弹出式菜单的使用;(7)公共对话框控件;(8)多模块程序设计;(9)日期函数的使用前言“台历”是人们办公、学习的好帮手,人们把它置于案头用来查看日期、星期并可以方便地记事。本题目便编制一个“电子台历”程序,实现台历的一般功能。一、 功能1、 启动程序,显示一个圆角矩形窗口,并自动显示当前月的月历。星期从星期一开始排列,星期六和星期天以不同的颜色显示。2、 鼠标单击可以查看不同的年份和月份(左键增大,右键减小)。单击某个日期会在窗口右半边

2、显示是否有记事。双击左下角的当前日期,可以使台历立即显示当月月历。3、 在窗体的空白处右击,可以弹出一个菜单,可以对显示的日历日期的颜色、字体,窗体的背影图片加以修改。所有颜色、字体和背影图片的设置会自动保存,下次启动时会自动应用上一次的设置。4、 从快捷菜单中选择“添加节日”或“添加记事”,可以分别实现对节日和记事的添加。在弹出的对话框中,能同时添加多个节日或记事。二、 课程设计的详细设计1、 程序的界面要求是圆角矩形窗口,该功能的实现用到了SetWindowRgn函数。SetWindowRgn函数是属于API函数,在使用时要先声明。其代码如下:Private Declare Functio

3、n CreateRoundRectRgn Lib gdi32 (ByVal X1 As Long, _ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, _ByVal X3 As Long, ByVal Y3 As Long) As LongPrivate Declare Function SetWindowRgn Lib user32 (ByVal hWnd As Long, _ByVal hRgn As Long, ByVal bRedraw As Boolean) As LonghRgn = CreateRoundRectRgn(0

4、, 0, 570, 400, 80, 100) 创建圆角矩形区域Call SetWindowRgn(Me.hWnd, hRgn, True)2、 年份、月份、日期和记事的显示依靠标签的Caption属性。其中,星期和日期的显示使用了控件数组,星期的显示使用了14个控件,日期的显示使用了74个控件。又把各个标签的背影设为透明,这样,便实现了日历界面的显示。3、 为了使文字有浮于图片之上的立体感,使用了内容相同但颜色伸浅不同且位置错开一点的两个控件来实现。功能的实现依靠以下代码:Public Sub GetCaption() 产生标签的文字,达到字体有悬浮的效果 Dim j As Integer

5、lblYear1.Caption = lblYear.Caption lblYear1.FontName = lblYear.FontName lblMonth1.Caption = lblMonth.Caption lblMonth1.FontName = lblMonth.FontName lblNow1.Caption = lblNow.Caption lblNow1.FontName = lblNow.FontName For j = 37 To 73 lblDay(j).Caption = lblDay(73 - j).Caption Next lblShowNote1.Captio

6、n = lblShowNote.Caption lblShowNote1.FontName = lblShowNote.FontName For j = 0 To 6 lblWeek(13 - j).FontName = lblWeek(j).FontName NextEnd Sub4、 本程序的主窗口使用了漂亮的图片作背影,样例共提供了4个.bmp格式的图片的加载使用以下代码来实现:Private Sub Pic1_Click() 日历背影图象变化 frmCalMain.Picture = Nothing frmCalMain.Picture = LoadPicture(App.Path &

7、 picsp1.bmp) frmMenu.Pic1.Checked = True frmMenu.Pic2.Checked = False frmMenu.Pic3.Checked = False frmMenu.Pic4.Checked = False strPicName = p1End SubPrivate Sub Pic2_Click() frmCalMain.Picture = Nothing frmCalMain.Picture = LoadPicture(App.Path & picsp2.bmp) frmMenu.Pic2.Checked = True frmMenu.Pic1

8、.Checked = False frmMenu.Pic3.Checked = False frmMenu.Pic4.Checked = False strPicName = p2End SubPrivate Sub Pic3_Click() frmCalMain.Picture = Nothing frmCalMain.Picture = LoadPicture(App.Path & picsp3.bmp) frmMenu.Pic3.Checked = True frmMenu.Pic1.Checked = False frmMenu.Pic2.Checked = False frmMenu

9、.Pic4.Checked = False strPicName = p3End SubPrivate Sub Pic4_Click() frmCalMain.Picture = Nothing frmCalMain.Picture = LoadPicture(App.Path & picsp4.bmp) frmMenu.Pic4.Checked = True frmMenu.Pic1.Checked = False frmMenu.Pic2.Checked = False frmMenu.Pic3.Checked = False strPicName = p4End Sub5、 启动程序和左

10、下角的当前日期要求显示当前月历,该功能的实现应用了两个过程和一个函数来实现:Private Sub DisplayNow() 该过程显示当前日期 Dim dtmNow As Date dtmNow = Date lblYear.Caption = Format(dtmNow, yyyy年) lblMonth.Caption = Format(dtmNow, M月) lblNow.Caption = Format(dtmNow, 今天是:dddddd) strNow = Format(dtmNow, dddddd) 用于存储当前年、月、日字符串 intYear = Val(Format(dtmN

11、ow, yyyy) 用三个变量存储当前年、月、日 intMonth = Val(Format(dtmNow, M) intDay = Val(Format(dtmNow, d) dtmOne = DateAdd(d, (1 - intDay), dtmNow)当前月的第一天 intNum = Days(intYear, intMonth) Call Sort(dtmOne, intNum) 调用过程生成每月的各个日期 使当前日期颜色正确显示 If frmCalMain.lblYear.Caption & frmCalMain.lblMonth.Caption & _ frmCalMain.lb

12、lDay(intNowDayIndex).Caption & 日 = strNow Then frmCalMain.lblDay(intNowDayIndex).ForeColor= frmCalMain.lblNow.ForeColor End IfEnd SubPrivate Sub Sort(dtm1 As Date, int1 As Integer) 该过程生成每月的各个日期 Dim intweek As Integer, i As Integer, j As Integer Dim h As Integer For h = 0 To 36 各个日期标签标题清空 lblDay(h).C

13、aption = Next h intweek = Val(Format(dtm1, w) 计算每月的第一天为星期几 If intweek - 1 0 Then i = intweek - 2 Else i = 6 End If j = 0 Do While j int1 lblDay(i).Caption = j + 1 lblDay(i).MousePointer = 99 使指针变成手的图形 lblDay(i).MouseIcon = LoadPicture(App.Path & Resourcehand.cur) j = j + 1 i = i + 1 Loop For j = 0 T

14、o 36 If lblDay(j).Caption = ThenlblDay(j).MousePointer = 99使指针边成移动的图形 lblDay(j).MouseIcon=LoadPicture(App.Path&Resourcemove.cur) End If NextEnd SubPrivate Function Days(intY As Integer, intM As Integer) 该函数计算每月天数 Dim k As Integer Select Case intM Case 1, 3, 5, 7, 8, 10, 12 k = 31 Case 2 If intY Mod 4 = 0 Then k = 29 Else k =

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 零售业

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号