机房收费系统系列三:MSHFlexGrid控件自动调整列宽

MSHFlexGrid控件在学生信息管理系统的时候就用到了,对它也只是简单的认识,机房收费系统中它就基本上成为了主角,合适的列宽,不仅美观,还是给人一种舒适感。认识一个对象,从他的三要素开始入手,属性、事件、方法

1、属性介绍:

属性:选择模式0-free,1-by row(选中对应的一整行),2-by column(选中对应的一整列),通过这三个选项,当对MSHFlexGrid中的数据进行修改时候,可以通过修改属性为1-by row,这样可以明显的看出被选中的行。

重要方法:

Additem 向网格中新添加一行
Clear  清除网格的内容
Removeitem 从网格中清除一行

2、调整MSHFlexGrid控件的列宽。


通过对比这两张图,明显看出第二张图看着更好看,怎样调整MSHFlexGrid控件的大小呢?

方法一:利用MSHFlexGrid控件的属性进行操作。允许用户调整里面有四个选项,0-默认,1-列,2-行,3-行和列,选择3-both,这样就可以手动调节了。


方法二:利用代码,自动调节大小。先在模块中声明一下

Public Sub AutoColWidth(Form As Form, Grid As MSHFlexGrid)
    '统一窗体和控件的文字大小
    Dim FontSize As Integer
    FontSize = Form.FontSize
    Form.FontSize = Grid.Font.Size
    
    Dim RowNum As Long, ColNum As Long, ColWidth As Double
    With Grid
        '遍历每一列
        For ColNum = 0 To .Cols - 1
            ColWidth = 0
            '遍历每一行,找到最长文本
            For RowNum = 0 To .Rows - 1
                If Form.TextWidth(.TextMatrix(RowNum, ColNum)) > ColWidth Then
                    ColWidth = Form.TextWidth(.TextMatrix(RowNum, ColNum))
                End If
            Next
            '在最长文本长度的基础上加90缇(6像素)
            .ColWidth(ColNum) = ColWidth + 150
        Next
    End With
    Form.FontSize = FontSize
End Sub

然后在窗体中再添加一条调用的代码

AutoColWidth Me, myflexgrid
这样,就可以自动调整列宽了。



原文地址:https://www.cnblogs.com/chenxiaochan/p/7237647.html