VB中MSHFlexGrid和MSFlexGrid区别

前言:

  进行机房的过程中我们大家可能都注意到了查询显示的控件有MSHFlexGrid和MSFlexGrid两种,看着就很相似傻傻分不清楚,于是就去查了下关于这个的信息;

  • 简单认识:

  MSHFlexGrid是MSFlexGrid的更新版,支持ADO的层次显示,如果不使用ADO,可以考虑MSFlexGrid,否则建议使用MSHFlexGrid;

  这里写图片描述

1、MSFlexGrid:

  • 使用Col和Row属性可以分别确定MSFlexGrid中列与行的个数
  • MSFlexGrid:控件可以显示网格数据,也可以对其进行操作,网格中可以包含字符串和图片。如果将它绑定到一个Data控件上,那么MSFlexGrid显示的将是只读的数据

    这里写图片描述

  • 引用:

> 工程—部件—Microsoft FlexGrid Control 6.0
  • 应用举例:

1、 将文本赋值给MSFlexGrid的单元格


> MSFlexGrid.TextMatrix(2,1)="学号"

2、选中某一单元

> MSFlexGrid.Row=1
> MSFlexGrid.Col=1

3、MSFlexGrid中的对齐功能的使用

> MSFlexGrid1.ColAlignment(index)=n

4、通过代码调节列宽度

> msflexgrid1.colwidth(i)=1600

5、实现MSFlexGrid控件单数行背景为白色,双数的行背景为红色

Dim i As Integer
With MSFlexGrid1
    .AllowBigSelection = True ’ 设置网格样式
    .FillStyle = flexFillRepeat
    For i = 0 To .Rows - 1
    .Row = i: .Col = .FixedCols
    .ColSel = .Cols() - .FixedCols - 1

    If i Mod 2 = 0 Then
        .CellBackColor = &HC0C0C0   ’ 浅灰
    Else
        .CellBackColor = vbRed      ’ 红色
    End If
    Next i
End With

2、MSHFlexGrid:

  • 用Cols和Rows属性来决定MSHFlexGrid控件中的列数和行数
  • MSHFlexGrid特性:能显示层次结构记录集—以层次结构方式显示的关系表;

这里写图片描述

  • 引用:
> 工程—部件—Microsoft Hierarchical FlexGrid Control 6.0(OLEDB)
  • 应用举例:

如果记录集已经在程序中产生,则可以不与adodc控件绑定,直接在MSHFlexgrid控件中显示数据,并且可以根据需要设置控件中行的颜色;

1、禁止MSHFlexgrid选择多行记录

> Private Sub MSHFlexGrid1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
   If MSHFlexGrid1.RowSel <> MSHFlexGrid1.Row Then                                                                                                                                                                                                                                                                  
         MSHFlexGrid1.RowSel = MSHFlexGrid1.Row
  End Sub

2、通过代码调节列宽度

> MSHFlexGrid1.colwidth(i)=1600

3、删除选中行

    Dim MsgText As String
    Dim txtSQL As String

    With MSFlexGrid1

    If .RowSel = 0 Then
        MsgBox "请选择学生下线!", 0 + 48, "提示!"
        Exit Sub
    Else
        If .RowSel > 0 Then

            If .RowSel = MSHFlexGrid1.Row = 0 Then
                MsgBox "首行不能删除!", 0 + 48, "提示!"
                Exit Sub
            End If

        txtSQL = "select * from online_info where cardno='" & Trim(.TextMatrix(.RowSel, 0)) & "'"
        Set mrc = ExecuteSQL(txtSQL, MsgText)

        FrmMain.Show
        FrmMain.txtCardNo = mrc.Fields(0)

        '执行下机操作
        FrmMain.lblOffLine = True

        '删除Msflexgrid表中选中的一行
        MSFlexGrid1.RemoveItem MSFlexGrid1.RowSel
        End If
    End If
    End With

小结:

  贯穿机房始终的一个控件,不同的控件作用也不同,可以根据需要自行选择;

猜你喜欢

转载自blog.csdn.net/qiqibei666/article/details/79371246