加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

机房收费系统 Part Six——MSFlexGrid控件总结

发布时间:2020-12-15 03:42:15 所属栏目:百科 来源:网络整理
导读:? ? ? ? ??MSFlexGrid控件是用来显示和操作表格数据。在敲机房的时候,好几个窗体都用到了这个控件,它直观的向我们展示了符合条件的数据,我就小小的总结了一下它在机房中的应用。 1.常用属性 ? ? ? ? ?先来熟悉一下MSFlexGrid控件常用到的属性。 Row 当前

? ? ? ? ??MSFlexGrid控件是用来显示和操作表格数据。在敲机房的时候,好几个窗体都用到了这个控件,它直观的向我们展示了符合条件的数据,我就小小的总结了一下它在机房中的应用。

1.常用属性

? ? ? ? ?先来熟悉一下MSFlexGrid控件常用到的属性。


Row 当前单元格所在行
Col 当前单元格所在列
Rows 表格的行数
Cols 表格的列数
Rowsel 为一定范围的单元格返回或设置起始行、终止行 ??
Colsel 为一定范围的单元格返回或设置起始列、终止列
CellAignment ? ? ? ? ?? 设置单元格格式属性
TextMatrix 设置单元格内容

2.常用方法(MSHFlexGrid)

? ? ? ? 1)Removeitem 删除项目
? ? ? ? 2)Addmoveitem 添加项目
? ? ? ? 3)Clear 清空表格

3.应用

? ? ? ?1)遍历所有数据库表,填写表格

? ? ? 例:在添加和删除用户的窗体中,根据用户级别这一条件,列出User_Info表中符合的数据。

? ? ? ? ? 这个用法在学生系统中就遇到了,简单的分三个步骤:
? ? ? ? ? ①填写表头,设置单元格格式;②输入SQL语句,用函数判断;③输出查询到的结果
Private Sub CmdUpdate_Click()
'刷新数据
    TxtSQL = "SELECT * From User_Info where Level='" & ComboLevel & "'"
    Set Mrc = ExecuteSQL(TxtSQL,Msgtext)
    '通过level选择,从表中调出信息
    With FlexGrid1
    '填写表头
        .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))
            .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)删除指定行,并删除该行在数据库中对应的结果集

? ? ? ? ? ?例:在添加和删除用户窗体中,需要删除指定行的用户,

? ? ? ? ? ? ①要删除User_Info表中的内容,②要删除表格中的记录
Private Sub CmdDelete_Click()
'删除用户
    Dim rstMrc As ADODB.Recordset
    If ComboLevel.Text = "" Then
    '判断表格中是否有内容
        MsgBox "没有信息!",vbOKOnly + vbExclamation,"警告"
        Exit Sub
        
    End If
    
    If Not IsNumeric(Trim(FlexGrid1.TextMatrix(FlexGrid1.Row,0))) Then
    '判断选中的用户名是否为数字,不是数字证明选中了表头
        MsgBox "该行为表头,请重新进行选择!","警告"
        Exit Sub
        
    End If
    
    TxtSQL = "DELETE FROM User_Info where UserID='" & Trim(FlexGrid1.TextMatrix(FlexGrid1.Row,0)) & "'"
    Set rstMrc = ExecuteSQL(TxtSQL,Msgtext)
    '将符合Userid条件的该项记录删除
    FlexGrid1.RemoveItem FlexGrid1.Row
    '在表格控件中删除这一行
  
End Sub
Private Sub FlexGrid1_MouseDown(Button As Integer,Shift As Integer,x As Single,y As Single)
    
    With FlexGrid1
    
        .Row = .MouseRow       '把选中行的值给.row
         NowRow = .Row           '把鼠标指定行给nowrow
        .Col = 0
        .ColSel = .Cols - 1
        
    End With
End Sub

Private Sub FlexGrid1_MouseUp(Button As Integer,y As Single)

    With FlexGrid1
    
        .RowSel = NowRow   '把行值给单元格内的起始终止行
        .ColSel = .Cols - 1
        
    End With
End Sub

? ? ? ? ? 3)修改指定的行

? ? ? ? ? ? ? 例:在学生基本信息维护的窗体中,需要对选中的学生的信息进行修改。
? ? ? ? ? ? ? 1.先来判断有没有选中具体的记录
<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>Private Sub CmdModify_Click()
'修改
    If Not IsNumeric(Trim(FlexGrid.TextMatrix(FlexGrid.Row,2))) Then
    '通过判断卡号这列是否为数字,来判断是否选中了记录
        MsgBox "没有选定要修改的记录!","警告"
        Exit Sub
        
    End If
    
    SetParent frmModifys.hWnd,frmMain.hWnd
    '修改窗体弹出
    Unload Me
    '卸载本窗体
    
End Sub
</strong></span>
? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? 2.接下来在修改学生信息的窗体中,根据选中的行,在Student表中找到符合这一卡号的记录集,并将它填入各个对应的文本框中
Private Sub Form_Load()
    '初始化窗体的大小
    Me.Height = 8000
    Me.Width = 10000
    
    '根据学生信息维护窗体中FlexGrid中选择的卡号,获取学生信息
    txtCardno.Text = Trim(frmMaintainStudent.FlexGrid.TextMatrix(frmMaintainStudent.FlexGrid.Row,2))
    TxtSQL = "SELECT * From Student_Info where cardno='" & Trim(txtCardno) & "'"
    Set Mrc = ExecuteSQL(TxtSQL,Msgtext)
    
    '将从Student表中获取的信息,填入文本框中
    txtStudentno = Trim(Mrc.Fields(1))
    txtStudentName = Trim(Mrc.Fields(2))
    CboSex.Text = Trim(Mrc.Fields(3))
    txtDepartment = Trim(Mrc.Fields(4))
    txtGrade = Trim(Mrc.Fields(5))
    txtClass = Trim(Mrc.Fields(6))
    txtCash = Trim(Mrc.Fields(7))
    txtStatus = Trim(Mrc.Fields(10))
    txtMsg = Trim(Mrc.Fields(8))
    CboType.Text = Trim(Mrc.Fields(14))
 
End Sub

? ? ? ? 3.最后一步就是用:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 来更新Student表中的数据就完成修改了。

? ??4)将MSFlexGrid控件中的内容导入Excel表


例:在学生的上机统计信息中需要导出Excel表,其实也挺简单的,用俗话说就是一个萝卜一个坑,将数据导出。
Private Sub CmdExcel_Click()
'导入Excel表格
    Dim xlApp As Excel.Application    '定义一个Excel应用程序
    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")    '创建Excel应用程序对象
    Set xlBook = xlApp.Workbooks.Add                 '创建一个工作簿
    Set xlSheet = xlBook.Worksheets(1)               '创建一个工作表
    
    DoEvents           '转让控制权,以便让操作系统处理其它的事件
    
    With FlexGrid      '将FlexGrid控件中内容导入Excel表格中
    
        For i = 0 To .Rows - 1         '遍历所有的行
        
            For j = 0 To .Cols - 1     '遍历所有的列
            
                DoEvents                 '转让控制权,以便让操作系统处理其它的事件
                xlApp.ActiveSheet.Cells(i + 1,j + 1) = .TextMatrix(i,j)   '创建新的单元格,并添加FlexGrid中的内容
                
            Next j
        Next i
        
    End With
    
    xlApp.ActiveWorkbook.SaveAs App.Path & "学生上机信息查询.xls"         '表格保存路径
    xlApp.ActiveWorkbook.Saved = True                                                      '保存表格
    MsgBox "导出完成!","提示"                       '保存成功提示信息
    xlApp.Visible = True                                                                                '显示表格

End Sub

4.小结

? ? ? ? ? ?在这四个应用中,第一个也就是填写表格内容的例子,是我们在学生系统中遇到过的。后面三个是在机房系统中应用的,其实是在以前的基础上实现的,也就是对表格中的内容(TextMatrix属性内容为条件)进行了进一步的判断。

? ? ? ? ?所以,每个阶段的学习都不是孤立的,我们要把他们联系起来,这个样子就比较轻松啦~

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读