《案例集锦》word版.docx
- 文档编号:2926513
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:58
- 大小:426.22KB
《案例集锦》word版.docx
《《案例集锦》word版.docx》由会员分享,可在线阅读,更多相关《《案例集锦》word版.docx(58页珍藏版)》请在冰点文库上搜索。
《案例集锦》word版
案例集锦
在前面的章节中讲述了使用VB创建数据库应用程序的几个范例,其实作为编程语言来说,VB易于掌握和提高,可以极为迅速和简洁的创建Windows应用程序,非常适合普通的用户来编写符合自己需要的实用小程序。
在接下来的内容中将向读者介绍几个用VB开发实用小程序的方法,并且结合实例向读者介绍VB编程中的许多技巧。
案例一 我的桌面小闹钟
一、概述
在本例中将创建一个可以自动跟随鼠标移动的小闹钟,实时地显示当前计算机的时间,并且允许用户添加、删除和修改定时任务,这些任务将被保存在一个Access数据库中,在设置的时间到达时,闹钟将用音乐警报,并弹出消息框来提示用户。
其功能模块图如图1.1所示。
图1.1 系统的功能模块图
二、数据库的准备
通过Access或者VB可视化数据管理器创建一个Access数据库,在其中添加一个名为“任务列表”的数据表。
该数据表的结构如表1.1所示。
表1.1 “任务列表”数据表的结构
字段名称
任务编号
任务时间
任务内容
任务状态
字段类型
文本
文本
文本
文本
字段大小
15
15
100
10
主键
是
否
否
否
三、应用程序的编写
在VB中创建一个新的“标准EXE”工程,将其命名为“我的小闹钟”。
在工程默认的窗体Form1中添加一个图片控件,两个标签控件,一个时间控件,依表11.2至表11.5所示的内容设置窗体和控件的属性。
表1.2 窗体Form1的属性
名称
BorderStyle
ShowInTaskBar
Form1
0-None
False
表1.3 图片控件的属性
名称
Appearance
BackColor
BorderStyle
Picture1
0-Flat
&H00FF8080&
1-FixedSingle
表1.4 标签控件的属性
名称
Alignment
BackStyle
BorderStyle
Caption
ForeColor
Label1
Label2
2-Center
2-Center
0-Transparent
0-Transparent
0-None
0-None
我的小闹钟
00:
00:
00
&H00FFFFFF&
&H80000012&
表1.5 时间控件的属性
名称
Enable
Interval
Timer1
True
100
在控件箱窗体的空白部分右键单击,在弹出的菜单中选择“部件”,将打开“部件”对话框,如图1.2所示。
图1.2 “部件”对话框
在“部件”对话框中选择“控件”选项卡,在其列表中找到“MicrosoftMultimediaControl6.0”,在其前方的复选框中打勾,单击“确定”按钮,向工程中添加对MutimediaMCI控件的引用。
在控件箱的最后将出现MutimediaMCI控件的图标,选中其图标,在Form1中绘出其实例,如图1.3所示,其属性将在代码中设置。
图1.3 添加MutimediaMCI控件的Form1
在工程中添加一个普通窗体Form2,如表1.7和表1.8所示为其设置属性并添加菜单。
表1.7 窗体Form2的属性
名称
BorderStyle
Caption
ShowInTaskBar
Form2
1-FixedSingle
任务列表
True
表1.8 窗体Form2的菜单
标题
名称
复选
缩进等级
菜单
编辑任务列表
跟随鼠标
退出
mnuMain
mnuRW
mnuGS
mnuQuit
不选中
不选中
选中
不选中
无缩进
缩进
缩进
缩进
在窗体上添加一个框架控件,两个标签控件,一个文本框控件和4个按钮控件,并且同添加MutimediaMCI控件一样,在窗体中添加MaskedEdit控件、ADOData控件和DataGrid控件并创建其实例。
按照表1.9至表1.15所示内容设置这些控件的属性。
表1.9 框架控件的属性
名称
Caption
Frame2
任务
表1.10 标签控件的属性
名称
Alignment
Caption
Label1
Label2
0-LeftJustfiy
0-LeftJustfiy
闹响时间:
任务内容:
表1.11 文本框控件的属性
名称
Text
Text1
请输入任务内容
表1.12 按钮控件的属性
名称
Caption
Command1
新增任务
Command2
Command3
Command4
删除任务
修改任务
关闭
表1.13 MaskedEdit的属性
名称
Format
Mask
PromptChar
MaskEdBox1
hh:
mmAM/PM
99:
99
_
表1.14 ADOData控件的属性
名称
Alignment
Visible
Adodc1
2-vbAlignBottom
False
表1.15DataGrid控件的属性
名称
AllowAddNew
AllowDelect
AllowUpdate
Caption
DataSource
DataGrid1
False
False
False
任务列表
Adodc1
完成后的窗体Form2如图1.4所示。
图1.4 完成后的窗体Form2
四、程序的代码详解
本例中的代码主要功能有3个:
界面控制、数据库控制和闹铃控制。
其中界面控制主要的内容为控制窗体的显示和移动;数据库控制的主要内容是任务的添加、删除、编辑和保存;闹铃控制的主要内容为显示当前时间并同任务的时间比较,在设置的时间闹铃。
下面将结合程序的界面介绍程序的内容和功能。
1.主模块的代码
在工程中添加一个模块,将其命名为Mdl_Main,其主要功能为声明函数和全局变量。
在模块中添加以下的代码:
DeclareFunctionSetWindowPosLib"user32"(ByValH%,ByValhb%,ByValX%,ByValY%,ByValcx%,ByValcy%,ByValF%)AsInteger
'声明API函数,功能是设置窗口的位置
PublicDeclareFunctionGetCursorPosLib"user32"(lpPointAsPOINTAPI)AsLong
'声明API函数,功能是得到当前鼠标的位置,以像素为单位
PublicTypePOINTAPI'声明用户变量类型,用于传递鼠标位置
XAsLong'鼠标的X坐标
YAsLong'鼠标的Y坐标
EndType
PublicOldxAsLong'旧窗体的X坐标
PublicOldyAsLong'旧窗体的Y坐标
PublicNewxAsLong'新窗体的X坐标
PublicNewyAsLong'新窗体的Y坐标
PublicPntAsPOINTAPI'声明变量,用于传递鼠标位置
PublicGSAsBoolean'声明变量,指明是否窗体跟随鼠标移动
PublicconstrAsString'声明变量,传递数据库连接字符串
PublicTypeAlarmtype'声明变量类型,用于传递任务的设置
AlarmHourAsInteger'任务时间的小时部分
AlarmMinAsInteger'任务时间的分钟部分
alarmAsBoolean'是否闹铃
alarmRWAsString'任务的内容
EndType
PublicalarmTime()AsAlarmtype'声明变量,用于传递任务的设置
PublicnoalarmAsBoolean'声明变量,指明是否需要闹铃
PublicmusicnameAsString'声明变量,传递音乐文件名称
PublicSubMain()'启动过程
constr="PROVIDER=Microsoft.Jet.OLEDB.3.51;DataSource="&App.Path&"\databases\任务列表97.mdb;"'设置数据库连接字符串
musicname=App.Path&"\music\alarmmusic.mid"'设置音乐文件名称
Form1.Show'显示闹钟窗体
EndSub
PublicSubGetAlarmtime()'得到任务列表的函数
IfForm2.Adodc1.Recordset.RecordCount<>0Then'有任务时
noalarm=False'闹响为开
ReDimalarmTime(1ToForm2.Adodc1.Recordset.RecordCount)
'重设任务列表数组长度
Form2.Adodc1.Recordset.MoveFirst'移动至最前记录
Fori=1ToForm2.Adodc1.Recordset.RecordCount'循环设置
'设置任务列表的内容
alarmTime(i).AlarmHour=Hour(Form2.Adodc1.Recordset
(1))
alarmTime(i).AlarmMin=Minute(Form2.Adodc1.Recordset
(1))
IfForm2.Adodc1.Recordset(3)="已执行"Then
alarmTime(i).alarm=False
Else
alarmTime(i).alarm=True
EndIf
alarmTime(i).alarmRW=Form2.Adodc1.Recordset
(2)
Form2.Adodc1.Recordset.MoveNext'移动至下一个记录
Nexti
Else
noalarm=True'没有任务时无需闹响
EndIf
EndSub
2.窗体Form1的代码
窗体Form1的代码如下:
DimHourNowAsInteger'声明窗体级变量,表示当前小时
DimMinNowAsInteger'声明窗体级变量,表示当前分钟
DimalarmIDAsInteger'声明窗体级变量,表示触发的任务序号
PrivateSubForm_Load()'窗体加载
GS=True'初始设置窗体为跟随鼠标
Me.Height=Picture1.Height'设置窗体高度
Me.Width=Picture1.Width'设置窗体宽度
CallSetWindowPos(Me.hWnd,-1,0,0,0,0,3)'设置窗体为最上层
'以下设置MCI控件
MMControl1.Notify=False'多媒体命令执行完毕不返回Done事件
MMControl1.Wait=False'让程序在多媒体命令完成前就得到控制权
MMControl1.Shareable=False'媒体设备不共享
MMControl1.FileName=musicname'设置闹响播放的音乐名称
MMControl1.Command="Open"'打开设备
CallGetAlarmtime'设置初始的任务列表
EndSub
PrivateSubForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger)MMControl1.Command="Close"'窗体卸载前关闭多媒体设备,释放资源
EndSub
'在标签控件上单击鼠标时
PrivateSubLabel1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButton=2Then'右键单击
Form1.PopupMenuForm2.mnuMain'显示窗体Form2的菜单
EndIf
EndSub
'在标签控件上单击鼠标时
PrivateSubLabel2_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButton=2Then'右键单击
Form1.PopupMenuForm2.mnuMain'显示窗体Form2的菜单
EndIf
EndSub
'在标签控件上单击鼠标时
PrivateSubPicture1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButton=2Then'右键单击
Form1.PopupMenuForm2.mnuMain'显示窗体Form2的菜单
EndIf
EndSub
'在标签控件上单击鼠标时
PrivateSubPicture2_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButton=2Then'右键单击
Form1.PopupMenuForm2.mnuMain'显示窗体Form2的菜单
EndIf
EndSub
PrivateSubTimer1_Timer()'时间控件的代码
Label2.Caption=Time'显示当前时间
HourNow=Hour(Time)'获得当前时间的小时
MinNow=Minute(Time)'获得当前时间的分钟
'检查任务列表,决定是否闹铃
IfForm2.Visible=FalseAndnoalarm=FalseThen
Fori=1ToForm2.Adodc1.Recordset.RecordCount'逐项对比
IfHourNow=alarmTime(i).AlarmHourAndMinNow=alarmTime(i).AlarmMinAndalarmTime(i).alarm=TrueThen'时间正好
alarmID=i'传递任务序号
Callalarm'调用闹响过程
ExitSub
EndIf
Nexti
EndIf
'窗体跟随的代码
IfGS=TrueAndForm2.Visible=FalseThen'需要跟随
GetCursorPosPnt'得到鼠标位置
Oldx=Form1.Left'将窗体位置传递给变量
Oldy=Form1.Top
Newx=Pnt.X*Screen.TwipsPerPixelX'得到窗体的新位置,数据由像素转为缇
Newy=Pnt.Y*Screen.TwipsPerPixelY
incx=(Newx-Oldx)/80*Screen.TwipsPerPixelX+10'计算偏移量
incy=(Newy-Oldy)/80*Screen.TwipsPerPixelY
Form1.MoveOldx+incx,Oldy+incy'移动窗体
EndIf
EndSub
PublicSubalarm()'闹响过程
MMControl1.Command="play"'播放音乐
MsgBox"您有任务!
"&CStr(HourNow)&"时"&CStr(MinNow)&"分,"&alarmTime(alarmID).alarmRW,vbInformation+vbOKOnly,"提醒"
'显示消息
alarmTime(alarmID).alarm=False'设置已闹铃
MMControl1.Command="Stop"'停止闹铃音乐
'修改数据库中的记录
Form2.Adodc1.Recordset.MovealarmID-1,1
Form2.Adodc1.Recordset(3)="已执行"
EndSub
3.窗体Form2的代码
窗体Form2的代码主要功能为数据操作,以下为窗体Form2的代码:
PrivateSubForm_Load()'加载窗体
'设置数据源
Adodc1.ConnectionString=constr
Adodc1.RecordSource="select*from任务列表orderby任务时间"
Adodc1.Refresh
'设置当前任务
IfNotAdodc1.Recordset.RecordCount=0Then
Adodc1.Recordset.MoveFirst
MaskEdBox1.Text=Adodc1.Recordset
(1)
Text1.Text=Adodc1.Recordset
(2)
EndIf
EndSub
PrivateSubCommand1_Click()'新增任务按钮
IfCommand1.Caption="新增任务"Then'新增任务
MaskEdBox1.SetFocus'格式文本框得到焦点
Text1.Text="请输入任务内容"
Command1.Caption="保存"
Command2.Enabled=False
Command3.Enabled=False
Command4.Caption="取消"
Adodc1.Recordset.AddNew'添加记录
Else
IfText1.Text<>""AndMaskEdBox1.Text<>MaskEdBox1.FormattedTextThen'输入数据有效
Command1.Caption="新增任务"
Command2.Enabled=True
Command3.Enabled=True
Command4.Caption="关闭"
'设置字段的值
Adodc1.Recordset(0)=CStr(Time)
Adodc1.Recordset
(1)=MaskEdBox1.Text
Adodc1.Recordset
(2)=Text1.Text
Adodc1.Recordset(3)="未执行"
Adodc1.Recordset.UpdateBatch'保存记录
Adodc1.Refresh
'刷新数据
Adodc1.RecordSource="select*from任务列表orderby任务时间"
Adodc1.Refresh
Adodc1.Recordset.MoveFirst
CallDataGrid1_Click
Else
MsgBox"输入错误!
",vbOKOnly,"输入错误"
EndIf
EndIf
EndSub
PrivateSubCommand2_Click()'删除按钮
IfMsgBox("确实删除当前任务吗?
",vbYesNo+vbQuestion,"确认删除")=vbYesThen
Adodc1.Recordset.Delete'删除记录
Adodc1.Recordset.MoveNext
IfAdodc1.Recordset.EOFThen'检查任务列表为空
IfAdodc1.Recordset.RecordCount=0Then
IfMsgBox("当前列表中没有任务。
添加任务吗?
",vbQuestion+vbYesNo,"添加任务?
")=vbYesThen
CallCommand1_Click'添加记录
EndIf
ExitSub
EndIf
Adodc1.Recordset.MoveFirst
EndIf
CallDataGrid1_Click
EndIf
EndSub
PrivateSubCommand3_Click()'修改任务按钮
IfCommand3.Caption="修改任务"Then
Command1.Enabled=False
Command2.Enabled=False
Command3.Caption="保存修改"
Command4.Caption="取消"
MaskEdBox1.SetFocus
Else'保存修改
IfText1.Text<>""AndMaskEdBox1.Text<>MaskEdBox1.FormattedTextThen
Command1.Enabled=True
Command2.Enabled=True
Command3.Caption="修改任务"
Command4.Caption="关闭"
'更新数据
Adodc1.Recordset
(1)=MaskEdBox1.Text
Adodc1.Recordset
(2)=Text1.Text
Adodc1.Recordset(3)="未执行"
Adodc1.Recordset.UpdateBatch'保存修改
Adodc1.Refresh
'刷新数据
Adodc1.RecordSource="select*from任务列表orderby任务时间"
Adodc1.Refresh
Adodc1.Recordset.MoveFirst
CallDataGrid1_Click
Else
MsgBox"输入错误!
",vbOKOnly,"输入错误"
EndIf
EndIf
EndSub
PrivateSubCommand4_Click()'关闭按钮
IfCommand4.Caption="关闭"Then'关闭窗口
UnloadMe
E
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 案例集锦 案例 集锦 word