VB6编程步骤-全部_第1页
VB6编程步骤-全部_第2页
VB6编程步骤-全部_第3页
VB6编程步骤-全部_第4页
VB6编程步骤-全部_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VB6编程 步骤 题目要求1. 新建工程,在工程中新建2个窗体和1个模块,窗体命名为frmMain和frmConfig,添加Excel操作专用模块。2. 执行菜单命令“工具-选项-编辑器格式”,设置标准文本的字体格式为自己喜欢的格式,执行菜单命令“工具-选项-编辑器”,“要求变量声明”前打勾3. 设置工程1的属性,修改启动对象为Sub Main,在module1中添加Sub Main过程,并输入代码:frmMain.Show vbModal。在frmMain上添加一个退出按钮,设置其合适的大小和字体,双击该按钮,输入“Unload Me”。4. 在frmMain窗体上放置“参数设定”按钮,修改

2、合适的外观属性,双击该按钮,输入代码“frmConfig.show vbmodal”5. 参数设定编程方法:(1) 在module1模块中,定义保存参数的自定义变量Public Type mSetData ' 自定义数据类型:设置参数,用于保存到磁盘文件中 TH As Single ' 温度高限 TL As Single ' 温度低限 RHH As Single ' 湿度高限 RHL As Single ' 湿度低限End TypePublic mAlarm As mSetData ' 用自定义类型mSetData 定义设置参数变量mAlarmP

3、ublic sAppPath As String ' 字符串,存放应用程序所在的路径(2) 在module1模块中创建一个初始化过程Init,代码如下Sub Init()sAppPath = "E:软件技术基础TR" '应用程序路径Open sAppPath & "Para.a" For Random As #1 Len = Len(mAlarm) ' 打开随机方式访问文件Get #1, 1, mAlarm ' 读取文件内容到变量中Close #1 '关闭文件End Sub在sub Main 中调用Init

4、 过程Sub main() Init ' 初始化,读取原设置参数 frmMain.Show vbModal ' 启动主窗体,有模式窗体End Sub(3) 设置frmConfig窗体的界面。 如图所示上述四个文本框的名字,从上到下依次为:txtTempH,txtTempL,txtRHH,txtRHL双击该窗体空白处,在Form_Load事件中输入代码,如下Private Sub Form_Load() '调入旧参数并显示在界面上 Me.txtRHH = mAlarm.RHH Me.txtRHL = mAlarm.RHL Me.txtTempH = mAlarm.TH M

5、e.txtTempL = mAlarm.TLEnd Sub双击该窗体上的“确定”按钮,代码如下:Private Sub cmdOK_Click() '把界面上输入的新参数保存在变量中 mAlarm.TH = Me.txtTempH mAlarm.TL = Me.txtTempL mAlarm.RHH = Me.txtRHH mAlarm.RHL = Me.txtRHL '变量保存在文件中 Open sAppPath & "Para.a" For Random As #1 Len = Len(mAlarm) Put #1, 1, mAlarm Clos

6、e #1 Unload MeEnd Sub6. 下位机数据的模拟采集(1) 定义变量存放下位机的数据Public Type mData ' 自定义数据类型:下位机数据,用于保存到磁盘文件中 T(1 To 2) As Single ' 温度 RH(1 To 2) As Single ' 湿度End TypePublic mD(1 To 4) As mData ' 用自定义类型mData定义下位机数据变量(2) 在frmMain窗体上放置一个定时器控件,命名为:tmrCaiji,其Ennabled 属性设为True,并设Interval属性为1000,双击定时器,完

7、成代码如下所示:Private Sub tmrCaiji_Timer()' 采集定时器,模拟产生下位机的数据 For i = 1 To 4 mD(i).T(1) = 30 + Rnd * 20: mD(i).T(2) = 50 + Rnd * 20 ' 随机数 Rnd在01之间 mD(i).RH(1) = 60 + Rnd * 20: mD(i).RH(2) = 30 + Rnd * 20Next iEnd Sub7. 下位机数据更新到界面上,并作报警处理放置一个定时器,命名为:tmrUpdate,其Ennabled 属性设为True,并设Interval属性为1000,双击定

8、时器,完成代码如下所示Private Sub tmrUpdate_Timer() ' 更新界面定时器 For i = 1 To 4 ' 显示温度,并格式化为显示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), "

9、;#0.0") Next i For i = 1 To 4 If mD(i).T(1) >= mAlarm.TH Then' 温度高于报警值上限 Me.lblTemp1(i).BackColor = vbRed' 背景变红 ElseIf mD(i).T(1) < mAlarm.TL Then' 温度低于报警值下限 Me.lblTemp1(i).BackColor = vbCyan' 背景变青色 Else ' 温度正常 Me.lblTemp1(i).BackColor = vbGreen' 背景变绿色 End If Next

10、iEnd Sub8. 绘制曲线(1) 放置按钮“开始绘图”,命名为cmdDraw,输入下列代码:Private Sub cmdDraw_Click()Me.tmrDraw.Enabled = Not Me.tmrDraw.Enabled ' 每单击一次,切换一次定时器启动/停止命令If Me.tmrDraw.Enabled = True Then Me.cmdDraw.Caption = "暂停绘图" Else Me.cmdDraw.Caption = "开始绘图"End Sub(2) 在frmMain窗体上放置图片框控件picturebox,设

11、置背景为深蓝,命名为picD,在图片框左侧和下侧放置lablel控件,作为坐标刻度指示。,界面如图所示(3) 在frmMain窗体代码窗口创建一个初始化坐标系的过程,如下所示Sub InitDraw(Xmin As Single, Xmax As Single, Ymin As Single, Ymax As Single) ' 自变量x,函数值y,min-max:范围 Me.picD.AutoRedraw = True' 自动重绘 Me.picD.Cls ' 清屏 Me.picD.Scale (Xmin, Ymax)-(Xmax, Ymin) ' 定义坐标系

12、(左上角x,左上角y)- (右下角x,右下角y) Me.picD.DrawWidth = 1 ' 画线宽度为1 '画垂直网格 For i = 1 To 6: Me.picD.Line (Xmax - Xmin) / 6 * i + Xmin, Ymin)-(Xmax - Xmin) / 6 * i + Xmin, Ymax), vbWhite: Next i '画水平网格For i = 1 To 10: Me.picD.Line (Xmin, (Ymax - Ymin) / 10 * i + Ymin)-(Xmax, (Ymax - Ymin) / 10 * i + Y

13、min), vbWhite: Next i Me.picD.CurrentX = Xmin: Me.picD.CurrentY = Ymin ' 光标回原点 Me.picD.DrawWidth = 2 '画线宽度为2End Sub(4) 放置一个定时器,命名为:tmrDraw,其Ennabled 属性设为false,并设Interval属性为100,双击定时器,完成代码如下所示Private Sub tmrDraw_Timer( ) ' 绘制曲线定时器Static T As Integer '定义静态变量T = T + 1 ' 累加If T = 60 T

14、hen ' 到60次 T = 0 '回到0 Call InitDraw(0, 60, 0, 100) 重新初始化坐标系End IfMe.picD.Line -(T, mD(1).T(1), vbYellow ' 画线,由上次光标位置画到指定坐标,光标也更新End Sub(5) 双击frmMain 窗体,在其Load事件中调用初始化坐标系的过程,如下:Private Sub Form_Load() Call InitDraw(0, 60, 0, 100) ' 初始化坐标系End Sub9. 数据记录(1) 在frmMain窗体上放置两个按钮“开始记录”和停止记录,

15、命名为cmdStart和cmdStop,放置一个定时器命名为tmrRecord,其定时间隔设为1000(2) 在程序所在文件夹建一个Excel文件,另存为97-2003兼容模式,名为“数据模板.xls”如图所示:(3) 在frmMain代码窗口创建如下过程Sub OpenExcel() Dim sFileName As String ' 文件名 sFileName = sAppPath & "" & Month(Now) & "-" & Day(Now) & "-" & Hour

16、(Time) & "-" & Minute(Time) & "-" & Second(Time) ' “月-日-时-分-秒”作文件名 Call GetExcel ' 获取可用的Excel文件 sXLSName = sFileName & ".xls": sModelName = sAppPath & "数据模板.xls" If Dir(sXLSName) <> "" Then Kill sXLSName ' 如果

17、欲保存的Excel文件已存在,则先删除 Set xlApp = GetObject(sModelName) '打开模扳文件 xlApp.Parent.Windows(1).Visible = True '使父窗体可见 Set xlSheet = xlApp.Application.Worksheets(1) '当前工作簿的第一页End Sub(4) 为“开始记录”按钮添加代码:Private Sub cmdStart_Click() OpenExcel ' 打开Excel文件 xlSheet.Cells(1, 5) = Month(Now) & &quo

18、t;月" & Day(Now) & "日采集的数据" xlSheet.Cells(2, 1) = "序号": xlSheet.Cells(2, 2) = "时间" For i = 1 To 8: xlSheet.Cells(2, i + 2) = i & "#温度": xlSheet.Cells(2, i + 2 + 8) = i & "#湿度": Next i Me.tmrRecord.Enabled = True ' 开始记录 Me.cmdS

19、top.Enabled = True: Me.cmdStart.Enabled = False ' 使能“停止记录”按钮,禁止“开始记录”按钮End Sub(5) 为“停止记录”按钮添加代码:Private Sub cmdStop_Click() Me.tmrRecord.Enabled = False '停止记录数据 xlSheet.SaveAs sXLSName ' Excel 表格另存 xlApp.Application.Quit ' 退出Excel Me.cmdExit.Enabled = True ' 保存完Excel后才能退出系统 Me.cm

20、dStart.Enabled = True: Me.cmdStop.Enabled = False ' 使能“开始记录”按钮,禁止“停止记录”按钮End Sub(6) 为定时器tmrRecord按钮添加代码:Private Sub tmrRecord_Timer() ' 数据记录定时器,定时保存到Excel表格 Static k As Long k = k + 1 If (k Mod 5) = 0 Then ' 定时器中断5次(即5秒)执行一次 SaveToExcel ' 数据记录到Excel文件 End IfEnd Sub(7) 在frmMain代码窗口创建S

21、aveToExcel过程,如下所示:Private Sub SaveToExcel() Static k As Long ' K为行号 k = k + 1 If k > 32767 Then k = 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(

22、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") &

23、"": 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)

24、.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

25、.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&q

26、uot;) & "%" End Sub10. 使用ADO访问数据库(1) 创建数据库(DB) 使用“可视化数据管理器”创建一个数据库文件:执行菜单命令“外接程序可视化数据管理器”,在打开的对话框中执行如下菜单命令,数据库文件命名为“数据”,保存 在数据库窗口中,点右键,选“新建表”,表名称为“数据表”,按如下表格添加字段名称类型大小必要的顺序位置缺省值序号Long40时间Date/time8100:00:01温度1Single420温度2Single420温度3Single420温度4Single420湿度1Single420湿度2Single420湿度3Singl

27、e420湿度4Single420添加完后,点击“生成表” 双击“数据表”,点“添加”,输入数据,每输入完一条记录就点击“更新” ,如果出现下列错误提示,点“否”输入45行数据即可,关闭“可视化数据管理器”(2)创建数据库访问程序 在frmMain窗体上放置一个按钮,外形:,名称:cmdDB 新建一个窗体,按下表设置属性属性名名称CaptionWidthHeightMaxButtonMinButton属性值frmDB数据访问窗口150009000FalseFalse 在frmDB窗体下方放置两个按钮 外形: ,分别命名为cmdQuery和cmdQuit 。 在frmDB窗体上,执行菜单命令“工程

28、/部件”,按下图选择ADO控件(ActiveX Data Objects)和DataGrid控件。点击“确定”,可以看到左侧的工具箱多了两个工具图标: 在frmDB窗体上放置一个DataGrid控件,设置其宽度(Width)为14000,高度(Height)为7000,其背景色(BackColor)为黄色。右键单击该控件,选“属性”,打开其属性窗口,设置下列其字体属性 切换到frmDB的代码窗口,定义访问数据库必须的变量:Dim cnn As New Connection, Rst As New ADODB.Recordset 生成数据库连接字符串:在frmDB窗体上放置一个ADO控件,右键单

29、击它,如下图选ADODC属性 打开ADO控件的属性页:点“生成”,得到下图,如图中所示选第二项点“下一步”,得到下图点击图中位置,找到数据库文件“数据.mdb”,如下图点“测试连接”,显示,点确定,复制属性页第一页中“使用连接字符串”下面文本框中的内容。 删除frmDB窗体上的ADO控件,双击“查询”按钮,输入如下代码Private Sub cmdQuery_Click() '连接数据库并实现所要求的查询 cnn.CursorLocation = adUseClient cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Se

30、curity Info=False;Data Source=E:软件技术基础TR数据.mdb" '此处粘贴刚刚生成的连接字符串 'Rst.Open "select 序号,时间,温度1,湿度1,from 数据 where 温度1>30 ", cnn, adOpenStatic, adLockBatchOptimistic, adCmdText Rst.Open "select * from 数据表", cnn, adOpenStatic, adLockBatchOptimistic, adCmdText Debug.Prin

31、t Rst.RecordCount '若无满足要求的记录,则提前退出 If Rst.RecordCount < 1 Then '若无符合条件的记录,则 Set Me.DataGrid1.DataSource = Rst '更新查询结果显 Exit Sub End If Rst.Sort = "时间" '排序 Set Me.DataGrid1.DataSource = Rst '显示于表格中 For i = 0 To 9: Me.DataGrid1.Columns(i).Width = Me.DataGrid1.Width / 1

32、0: Next i Me.DataGrid1.Caption = "查询到的数据" End Sub(3) 完成数据访问窗体,双击“返回按钮”,输入下面代码:Private Sub cmdQuit_Click() Rst.Close '关闭视图 cnn.Close ' 断开数据库连接 Unload Me ' 关闭窗体End Sub11. 给采集到的数据添加滤波功能(1) 添加模块module2,在其代码窗口中输入下面函数:' 中位平均法滤波函数,数组x中去掉TrimN个最大的和最小的,剩余数据取平均值Public Function MidLvB

33、o(x() As Single, TrimN As Integer) As Single Dim L, U: L = LBound(x): U = UBound(x) ' 取数据源数组下标的下限和上限 Dim b() As Single: ReDim b(L To U) ' 定义用于排序的数组 For i = L To U: b(i) = x(i): Next i ' 数组另存 ' 以下为冒泡法排序 For i = L To U - 1 For j = i + 1 To U If (b(i) > b(j) Then Dim t As Single t =

34、b(i): b(i) = b(j): b(j) = t ' 交换 End If Next j Next i Dim sum As Single, n As Integer: sum = 0 ' sum为求和数,n为最终留下的数据个数 For i = L + TrimN To U - TrimN: sum = sum + b(i): Next i ' 中间数求和 n = U - L - 2 * TrimN + 1 ' 留下的数据个数 If n <= 0 Then MidLvBo = 0 Else MidLvBo = sum / n ' 异常处理End

35、 Function(2)在frmMain窗体空白处放置按钮,命名为cmdLvBo,双击它,添加下面的代码:Private Sub cmdLvBo_Click() Dim x(1 To 6) As Single, TrimN As Integer, y As Single For i = 1 To 6 x(i) = CSng(InputBox("请输入6个数据,当前是第" & i & "个") Next i TrimN = CInt(InputBox("请输入滤波两头去掉的数据个数") y = MidLvBo(x, TrimN): Debug.Print y MsgBox "输入的数据分别是:" & x(1) & "," & x(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论