VB6编程步骤全部.docx

上传人:b****7 文档编号:9645307 上传时间:2023-02-05 格式:DOCX 页数:21 大小:303.14KB
下载 相关 举报
VB6编程步骤全部.docx_第1页
第1页 / 共21页
VB6编程步骤全部.docx_第2页
第2页 / 共21页
VB6编程步骤全部.docx_第3页
第3页 / 共21页
VB6编程步骤全部.docx_第4页
第4页 / 共21页
VB6编程步骤全部.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

VB6编程步骤全部.docx

《VB6编程步骤全部.docx》由会员分享,可在线阅读,更多相关《VB6编程步骤全部.docx(21页珍藏版)》请在冰豆网上搜索。

VB6编程步骤全部.docx

VB6编程步骤全部

VB6编程步骤

题目要求

1.新建工程,在工程中新建2个窗体和1个模块,窗体命名为frmMain和frmConfig,添加Excel操作专用模块。

2.执行菜单命令“工具-选项-编辑器格式”,设置标准文本的字体格式为自己喜欢的格式,执行菜单命令“工具-选项-编辑器”,“要求变量声明”前打勾

3.设置工程1的属性,修改启动对象为SubMain,在module1中添加SubMain过程,并输入代码:

frmMain.ShowvbModal。

在frmMain上添加一个退出按钮,设置其合适的大小和字体,双击该按钮,输入“UnloadMe”。

4.在frmMain窗体上放置“参数设定”按钮,修改合适的外观属性,双击该按钮,输入代码“frmConfig.showvbmodal”

5.参数设定编程方法:

(1)在module1模块中,定义保存参数的自定义变量

PublicTypemSetData'自定义数据类型:

设置参数,用于保存到磁盘文件中

THAsSingle'温度高限

TLAsSingle'温度低限

RHHAsSingle'湿度高限

RHLAsSingle'湿度低限

EndType

PublicmAlarmAsmSetData'用自定义类型mSetData定义设置参数变量mAlarm

PublicsAppPathAsString'字符串,存放应用程序所在的路径

(2)在module1模块中创建一个初始化过程Init,代码如下

SubInit()

sAppPath="E:

\软件技术基础\TR"'应用程序路径

OpensAppPath&"\Para.a"ForRandomAs#1Len=Len(mAlarm)'打开随机方式访问文件

Get#1,1,mAlarm'读取文件容到变量中

Close#1'关闭文件

EndSub

在subMain中调用Init过程

Submain()

Init'初始化,读取原设置参数

frmMain.ShowvbModal'启动主窗体,有模式窗体

EndSub

(3)设置frmConfig窗体的界面。

如图所示

上述四个文本框的名字,从上到下依次为:

txtTempH,txtTempL,txtRHH,txtRHL

双击该窗体空白处,在Form_Load事件中输入代码,如下

PrivateSubForm_Load()'调入旧参数并显示在界面上

Me.txtRHH=mAlarm.RHH

Me.txtRHL=mAlarm.RHL

Me.txtTempH=mAlarm.TH

Me.txtTempL=mAlarm.TL

EndSub

双击该窗体上的“确定”按钮,代码如下:

PrivateSubcmdOK_Click()'把界面上输入的新参数保存在变量中

mAlarm.TH=Me.txtTempH

mAlarm.TL=Me.txtTempL

mAlarm.RHH=Me.txtRHH

mAlarm.RHL=Me.txtRHL

'变量保存在文件中

OpensAppPath&"\Para.a"ForRandomAs#1Len=Len(mAlarm)

Put#1,1,mAlarm

Close#1

UnloadMe

EndSub

6.下位机数据的模拟采集

(1)定义变量存放下位机的数据

PublicTypemData'自定义数据类型:

下位机数据,用于保存到磁盘文件中

T(1To2)AsSingle'温度

RH(1To2)AsSingle'湿度

EndType

PublicmD(1To4)AsmData'用自定义类型mData定义下位机数据变量

(2)在frmMain窗体上放置一个定时器控件,命名为:

tmrCaiji,其Ennabled属性设为True,并设Interval属性为1000,双击定时器,完成代码如下所示:

PrivateSubtmrCaiji_Timer()'采集定时器,模拟产生下位机的数据

Fori=1To4

mD(i).T

(1)=30+Rnd*20:

mD(i).T

(2)=50+Rnd*20'随机数Rnd在0~1之间

mD(i).RH

(1)=60+Rnd*20:

mD(i).RH

(2)=30+Rnd*20

Nexti

EndSub

7.下位机数据更新到界面上,并作报警处理

放置一个定时器,命名为:

tmrUpdate,其Ennabled属性设为True,并设Interval属性为1000,双击定时器,完成代码如下所示

PrivateSubtmrUpdate_Timer()'更新界面定时器

Fori=1To4'显示温度,并格式化为显示1位小数

Me.lblTemp1(i)=Format(mD(i).T

(1),"#0.0"):

Me.lblTemp2(i)=Format(mD(i).T

(2),"#0.0")Rnd

Me.lblRH1(i)=Format(mD(i).RH

(1),"#0.0"):

Me.lblRH2(i)=Format(mD(i).RH

(2),"#0.0")

Nexti

Fori=1To4

IfmD(i).T

(1)>=mAlarm.THThen'温度高于报警值上限

Me.lblTemp1(i).BackColor=vbRed'背景变红

ElseIfmD(i).T

(1)

Me.lblTemp1(i).BackColor=vbCyan'背景变青色

Else'温度正常

Me.lblTemp1(i).BackColor=vbGreen'背景变绿色

EndIf

Nexti

EndSub

8.绘制曲线

(1)放置按钮“开始绘图”,命名为cmdDraw,输入下列代码:

PrivateSubcmdDraw_Click()

Me.tmrDraw.Enabled=NotMe.tmrDraw.Enabled'每单击一次,切换一次定时器启动/停止命令

IfMe.tmrDraw.Enabled=TrueThenMe.cmdDraw.Caption="暂停绘图"ElseMe.cmdDraw.Caption="开始绘图"

EndSub

(2)在frmMain窗体上放置图片框控件picturebox,设置背景为深蓝,命名为picD,在图片框左侧和下侧放置lablel控件,作为坐标刻度指示。

,界面如图所示

(3)在frmMain窗体代码窗口创建一个初始化坐标系的过程,如下所示

SubInitDraw(XminAsSingle,XmaxAsSingle,YminAsSingle,YmaxAsSingle)'自变量x,函数值y,min-max:

Me.picD.AutoRedraw=True'自动重绘

Me.picD.Cls'清屏

Me.picD.Scale(Xmin,Ymax)-(Xmax,Ymin)'定义坐标系(左上角x,左上角y)-(右下角x,右下角y)

Me.picD.DrawWidth=1'画线宽度为1

'画垂直网格

Fori=1To6:

Me.picD.Line((Xmax-Xmin)/6*i+Xmin,Ymin)-((Xmax-Xmin)/6*i+Xmin,Ymax),vbWhite:

Nexti

'画水平网格

Fori=1To10:

Me.picD.Line(Xmin,(Ymax-Ymin)/10*i+Ymin)-(Xmax,(Ymax-Ymin)/10*i+Ymin),vbWhite:

Nexti

Me.picD.CurrentX=Xmin:

Me.picD.CurrentY=Ymin'光标回原点

Me.picD.DrawWidth=2'画线宽度为2

EndSub

(4)放置一个定时器,命名为:

tmrDraw,其Ennabled属性设为false,并设Interval属性为100,双击定时器,完成代码如下所示

PrivateSubtmrDraw_Timer()'绘制曲线定时器

StaticTAsInteger'定义静态变量

T=T+1'累加

IfT=60Then'到60次

T=0'回到0

CallInitDraw(0,60,0,100)重新初始化坐标系

EndIf

Me.picD.Line-(T,mD

(1).T

(1)),vbYellow'画线,由上次光标位置画到指定坐标,光标也更新

EndSub

(5)双击frmMain窗体,在其Load事件中调用初始化坐标系的过程,如下:

PrivateSubForm_Load()

CallInitDraw(0,60,0,100)'初始化坐标系

EndSub

9.数据记录

(1)在frmMain窗体上放置两个按钮“开始记录”和停止记录,命名为cmdStart和cmdStop,放置一个定时器命名为tmrRecord,其定时间隔设为1000

(2)在程序所在文件夹建一个Excel文件,另存为97-2003兼容模式,名为“数据模板.xls”如图所示:

(3)在frmMain代码窗口创建如下过程

SubOpenExcel()

DimsFileNameAsString'文件名

sFileName=sAppPath&"\"&Month(Now)&"-"&Day(Now)&"-"&Hour(Time)&"-"&Minute(Time)&"-"&Second(Time)'“月-日-时-分-秒”作文件名

CallGetExcel'获取可用的Excel文件

sXLSName=sFileName&".xls":

sModelName=sAppPath&"\数据模板.xls"

IfDir(sXLSName)<>""ThenKillsXLSName'如果欲保存的Excel文件已存在,则先删除

SetxlApp=GetObject(sModelName)'打开模扳文件

xlApp.Parent.Windows

(1).Visible=True'使父窗体可见

SetxlSheet=xlApp.Application.Worksheets

(1)'当前工作簿的第一页

EndSub

(4)为“开始记录”按钮添加代码:

PrivateSubcmdStart_Click()

OpenExcel'打开Excel文件

xlSheet.Cells(1,5)=Month(Now)&"月"&Day(Now)&"日采集的数据"

xlSheet.Cells(2,1)="序号":

xlSheet.Cells(2,2)="时间"

Fori=1To8:

xlSheet.Cells(2,i+2)=i&"#温度":

xlSheet.Cells(2,i+2+8)=i&"#湿度":

Nexti

Me.tmrRecord.Enabled=True'开始记录

Me.cmdStop.Enabled=True:

Me.cmdStart.Enabled=False'使能“停止记录”按钮,禁止“开始记录”按钮

EndSub

(5)为“停止记录”按钮添加代码:

PrivateSubcmdStop_Click()

Me.tmrRecord.Enabled=False'停止记录数据

xlSheet.SaveAssXLSName'Excel表格另存

xlApp.Application.Quit'退出Excel

Me.cmdExit.Enabled=True'保存完Excel后才能退出系统

Me.cmdStart.Enabled=True:

Me.cmdStop.Enabled=False'使能“开始记录”按钮,禁止“停止记录”按钮

EndSub

(6)为定时器tmrRecord按钮添加代码:

PrivateSubtmrRecord_Timer()'数据记录定时器,定时保存到Excel表格

StatickAsLong

k=k+1

If(kMod5)=0Then'定时器中断5次(即5秒)执行一次

SaveToExcel'数据记录到Excel文件

EndIf

EndSub

(7)在frmMain代码窗口创建SaveToExcel过程,如下所示:

PrivateSubSaveToExcel()

StatickAsLong'K为行号

k=k+1

Ifk>32767Thenk=0'Excel最大行不能超过32768

xlSheet.Cells(k+2,1)=Time:

xlSheet.Cells(k+2,2)=k'表头

xlSheet.Cells(k+2,3)=Format(mD

(1).T

(1),"#0.0")&"℃":

xlSheet.Cells(k+2,4)=Format(mD

(1).T

(2),"#0.0")&"℃"

xlSheet.Cells(k+2,5)=Format(mD

(2).T

(1),"#0.0")&"℃":

xlSheet.Cells(k+2,6)=Format(mD

(2).T

(2),"#0.0")&"℃"

xlSheet.Cells(k+2,7)=Format(mD(3).T

(1),"#0.0")&"℃":

xlSheet.Cells(k+2,8)=Format(mD(3).T

(2),"#0.0")&"℃"

xlSheet.Cells(k+2,9)=Format(mD(4).T

(1),"#0.0")&"℃":

xlSheet.Cells(k+2,10)=Format(mD(4).T

(2),"#0.0")&"℃"

xlSheet.Cells(k+2,11)=Format(mD

(1).RH

(1),"#0")&"%":

xlSheet.Cells(k+2,12)=Format(mD

(1).RH

(2),"#0")&"%"

xlSheet.Cells(k+2,13)=Format(mD

(2).RH

(1),"#0")&"%":

xlSheet.Cells(k+2,14)=Format(mD

(2).RH

(2),"#0")&"%"

xlSheet.Cells(k+2,15)=Format(mD(3).RH

(1),"#0")&"%":

xlSheet.Cells(k+2,16)=Format(mD(3).RH

(2),"#0")&"%"

xlSheet.Cells(k+2,17)=Format(mD(4).RH

(1),"#0")&"%":

xlSheet.Cells(k+2,18)=Format(mD(4).RH

(2),"#0")&"%"

EndSub

10.使用ADO访问数据库

(1)创建数据库(DB)

①使用“可视化数据管理器”创建一个数据库文件:

执行菜单命令“外接程序\可视化数据管理器”,在打开的对话框中执行如下菜单命令,数据库文件命名为“数据”,保存

②在数据库窗口中,点右键,选“新建表”,表名称为“数据表”,按如下表格添加字段

名称

类型

大小

必要的

顺序位置

缺省值

序号

Long

4

0

时间

Date/time

8

1

00:

00:

01

温度1

Single

4

2

0

温度2

Single

4

2

0

温度3

Single

4

2

0

温度4

Single

4

2

0

湿度1

Single

4

2

0

湿度2

Single

4

2

0

湿度3

Single

4

2

0

湿度4

Single

4

2

0

添加完后,点击“生成表”

③双击“数据表”,点“添加”,输入数据,每输入完一条记录就点击“更新”,如果出现下列错误提示,点“否”

输入4~5行数据即可,关闭“可视化数据管理器”

(2)创建数据库访问程序

①在frmMain窗体上放置一个按钮,外形:

,名称:

cmdDB

②新建一个窗体,按下表设置属性

属性名

名称

Caption

Width

Height

MaxButton

MinButton

属性值

frmDB

数据访问窗口

15000

9000

False

False

③在frmDB窗体下方放置两个按钮外形:

,分别命名为cmdQuery和cmdQuit。

④在frmDB窗体上,执行菜单命令“工程/部件”,按下图选择ADO控件(ActiveXDataObjects)和DataGrid控件。

点击“确定”,可以看到左侧的工具箱多了两个工具图标:

⑤在frmDB窗体上放置一个DataGrid控件,设置其宽度(Width)为14000,高度(Height)为7000,其背景色(BackColor)为黄色。

右键单击该控件,选“属性”,打开其属性窗口,设置下列其字体属性

⑥切换到frmDB的代码窗口,定义访问数据库必须的变量:

DimnAsNewConnection,RstAsNewADODB.Recordset

⑦生成数据库连接字符串:

在frmDB窗体上放置一个ADO控件,右键单击它,如下图选ADODC属性

打开ADO控件的属性页:

点“生成”,得到下图,如图中所示选第二项

点“下一步”,得到下图

点击图中位置,找到数据库文件“数据.mdb”,如下图

点“测试连接”,显示

,点确定,复制属性页第一页中“使用连接字符串”下面文本框中的容。

⑧删除frmDB窗体上的ADO控件,双击“查询”按钮,输入如下代码

PrivateSubcmdQuery_Click()

'连接数据库并实现所要求的查询

n.CursorLocation=adUseClient

n.Open"Provider=Microsoft.Jet.OLEDB.4.0;PersistSecurityInfo=False;DataSource=E:

\软件技术基础\TR\数据.mdb"'此处粘贴刚刚生成的连接字符串

'Rst.Open"select序号,时间,温度1,湿度1,from数据where温度1>30",n,adOpenStatic,adLockBatchOptimistic,adCmdText

Rst.Open"select*from数据表",n,adOpenStatic,adLockBatchOptimistic,adCmdText

Debug.PrintRst.RecordCount

'若无满足要求的记录,则提前退出

IfRst.RecordCount<1Then'若无符合条件的记录,则

SetMe.DataGrid1.DataSource=Rst'更新查询结果显

ExitSub

EndIf

Rst.Sort="时间"'排序

SetMe.DataGrid1.DataSource=Rst'显示于表格中

Fori=0To9:

Me.DataGrid1.Columns(i).Width=Me.DataGrid1.Width/10:

Nexti

Me.DataGrid1.Caption="查询到的数据"

EndSub

(3)完成数据访问窗体,双击“返回按钮”,输入下面代码:

PrivateSubcmdQuit_Click()

Rst.Close'关闭视图

n.Close'断开数据库连接

UnloadMe'关闭窗体

EndSub

11.给采集到的数据添加滤波功能

(1)添加模块module2,在其代码窗口中输入下面函数:

'中位平均法滤波函数,数组x中去掉TrimN个最大的和最小的,剩余数据取平均值

PublicFunctionMidLvBo(x()AsSingle,TrimNAsInteger)AsSingle

DimL,U:

L=LBound(x):

U=UBound(x)'取数据源数组下标的下限和上限

Dimb()AsSingle:

ReDimb(LToU)'定义用于排序的数组

Fori=LToU:

b(i)=x(i):

Nexti'数组另存

'以下为冒泡法排序

Fori=LToU-1

Forj=i+1ToU

If(b(i)>b(j))Then

DimtAsSingle

t=b(i):

b(i)=b(j):

b(j)=t'交换

EndIf

Nextj

Nexti

DimsumAsSingle,nAsInteger:

sum=0'sum为求和数,n为最终留下的数据个数

Fori=L+TrimNToU-TrimN:

sum=sum+b(i):

Nexti'中间数求和

n=U-L-2*TrimN+1'留下的数据个数

Ifn<=0ThenMidLvBo=0ElseMidLvBo=sum/n'异常处理

EndFunction

(2)在frmMain窗体空白处放置按钮,

,命名为cmdLvBo,双击它,添加下面的代码:

PrivateSubcmdLvBo_Click()

Dimx(1To6)AsSingle,TrimNAsInteger,yAsSingle

Fori=1To6

x(i)=CSng(InputBox("请输入6个数据,当前是第"

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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