机房收费(二)之MSFlexGrid控件
2016-06-26 19:53
169 查看
前言
在学习学生信息系统中的查询成绩和学籍信息窗体的时候,我们已经接触过这一控件。而到机房的时候,这一控件的应用更加广泛,为了更好的学习,我们需要对MSFlexGrid控件有个大致的了解。基本介绍
作用:显示和操作表格数据属性:row (指表格的行) rows(表格的总行数)
col (指表格的列) cols (表格的总列数)
CellAlignment (单元内容对齐方式)
ColAlignment (列内容对齐方式)
TextMatrix(x,y)(某一单元格的坐标,x代表行,y代表列)
ScrollBars(滚动条属性)
其他常用属性:
右击MSFlexGrid控件——属性——通用等
基本应用
1.MSFlexGrid控件的加载,显示记录
Private Sub cmdUpdate_Click() Dim mrc As ADODB.Recordset '保存执行查询后获得的记录集 Dim Msgtext As String '用来存放返回信息 Dim txtSQL As String '用来存放SQL语句 '连接数据库的语句,错误91可能出现的位置 txtSQL = "select * from User_Info where Level='" & comboLevel & "'" '在表User_Info中查找列Level中与VB该窗体comboLevel相对应的某整列数据 Set mrc = ExecuteSQL(txtSQL, Msgtext) '执行SQL语句 With myflexgrid '填写表头 .Rows = 1 .CellAlignment = 4 .TextMatrix(0, 0) = "用户名" .TextMatrix(0, 1) = "姓名" .TextMatrix(0, 2) = "开户人" Do While Not mrc.EOF '遍历所有记录,填入控件 .Rows = .Rows + 1 '循环添加记录 .CellAlignment = 4 .TextMatrix(.Rows - 1, 0) = Trim(mrc.Fields(0)) ' .Rows - 1是横坐标,与上面.Rows = 1代表的有所不同 ' .Rows = 1是指控件加载时总行数为1行(控件行数最小为1) ' 表示坐标时,我们都知道是从(0,0)开始,因此.Rows - 1只是代表坐标从头开始,与控件加载时设定的行数无关 .TextMatrix(.Rows - 1, 1) = Trim(mrc.Fields(3)) .TextMatrix(.Rows - 1, 2) = Trim(mrc.Fields(4)) mrc.MoveNext Loop End With mrc.Close End Sub
2.选中记录突出显示
这个问题可以通过两种方法解决(1)添加代码
myflexgrid.SelectionMode = flexSelectionByRow '选中某整行 myflexgrid.FocusRect = flexFocusNone '选中行显示焦点框 myflexgrid.HighLight = flexHighlightWithFocus '选中行突出显示
(2)设置属性
右击MSFlexGrid控件——属性——通用——
选定模式——1-By Row
焦点区——0-None
突出显示——2-With Focus
3.删除选中的记录
要点:判断数据库中有无该记录——判断该用户是否正在登录——删除注意:如果表头设置为固定行,则不需考虑是否可以删除表头
如果不是,则需在选中表头或者执行删除表头命令是给出提示
Private Sub cmdDele_Click() Dim txtSQL As String Dim Msgtext As String Dim mrc As ADODB.Recordset '找到选中的行在数据库中的记录 txtSQL = "select * from User_Info where userID='" & Trim(myflexgrid.TextMatrix(myflexgrid.Row, 0)) & "'" Set mrc = ExecuteSQL(txtSQL, Msgtext) If mrc.EOF Then '判断是否有记录 MsgBox "无记录", vbInformation, "温馨提示" Exit Sub Else If mrc.Fields(0) = Username Then '判断该用户是否正在登录 MsgBox "该用户正在登录,不能删除", vbOKOnly + vbExclamation, "警告" Else mrc.Delete myflexgrid.RemoveItem myflexgrid.Row '删除表中选中的记录 MsgBox "删除成功", vbInformation, "温馨提示" mrc.Close End If End If End Sub
4.将MSFlexGrid控件内容导出到Excel表格中
要点:确保安装excel——引用excel——添加代码(1)引用excel
工程——引用——浏览——找到office的安装位置——将文件类型修改为所有文件——选中“EXCEL.EXE”
(2)添加代码
Private Sub Cmdexport_Click() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim xlRange As Excel.Range Dim i As Integer Dim j As Integer Set xlApp = CreateObject("Excel.application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) DoEvents '转让控制权,以便让操作系统处理其它的事件 With myflexgrid For i = 0 To .Rows - 1 For j = 0 To .Cols - 1 DoEvents xlApp.ActiveSheet.Cells(i + 1, j + 1) = .TextMatrix(i, j) Next j Next i End With xlApp.ActiveWorkbook.SaveAs App.Path & "\学生充值记录.xls" xlApp.ActiveWorkbook.Saved = True MsgBox "导出成功!", vbOKOnly , "温馨提示" End Sub
小结
总结可以帮助我们发现更多的问题,帮助我们更快的成长。通过对MSFlexGrid控件的学习和总结,我发现了自己学习过程中的很多问题,也更加认识到总结的重要性。同时,我们应该寻求更简单的方法实现功能,提高能力!相关文章推荐
- 【Remoting】.Net remoting方法实现简单的在线升级(下篇:重启exe)
- spark: scala实现worldcount
- hdu4126(最小生成树最佳替换边)
- SurfaceView开发示波器<略>
- leetcode 344 Reverse String
- 关于回调函数
- 用户登录界面
- C/C++函数名称修饰规则及extern "C"的作用
- 第二章:probability distribution exercise45-52
- 前端面试
- Web前端资源汇总
- 287. Find the Duplicate Number
- 负数的二进制表示
- C程序内存分配
- C++ - Nuc - 00004:跳马问题(bfs)
- 如何使用GCC编译器
- 启动Eclipse 报错:java was started but returned exit code = 1
- C++的头文件和实现文件分别写什么
- Android 5.0以后启动服务的正确做法
- MarqueeView源码简单分析笔记