注册 登录
编程论坛 VB6论坛

mshflexgrid1 怎么实现根据字节长度自动调整列宽?

wxflw 发布于 2014-10-12 22:17, 565 次点击
如题。
我根据网上的用label控件间接地设置好像不行啊。
3 回复
#2
snrtjat2014-10-13 09:33
从度娘上找的,你可以看看……
一个专门美化MSHFlexGrid的过程,不仅可以自动调整列宽,还可以自动按照列的属性(字符或数字)调整对齐方式,不过要把窗体字体和表格字体设成一样的,而且先要Set MSHFlexGrid.DataSource=Recordset
用法 AutoSizeFlexGrid <MSHFlexGrid的控件名称>
程序代码:
Public Sub AutoSizeFlexGrid(flexObject As MSHierarchicalFlexGridLib.MSHFlexGrid)

 Dim RsFlex As ADODB.Recordset, sngMaxWidth() As Single, sngTextWidth As Single

 Dim X As Integer, Y As Integer

  With flexObject
     If .Cols = 0 Then Exit Sub
     .Visible = False
     ReDim sngMaxWidth(.Cols - 1)
     For Y = 0 To .Rows - 1
         For X = 0 To .Cols - 1
             sngTextWidth = .Parent.TextWidth(Trim(.TextMatrix(Y, X))) * 1
             If sngMaxWidth(X) < sngTextWidth Then sngMaxWidth(X) = sngTextWidth
         Next
     Next
     
     For X = 0 To flexObject.Cols - 1
        .ColWidth(X) = sngMaxWidth(X) + 120
     Next
     For X = 0 To .Cols - 1
         Set RsFlex = flexObject.DataSource
         If X < RsFlex.Fields.Count And Not (RsFlex.EOF Or RsFlex.BOF) Then
            Select Case TypeName(RsFlex.Fields(X).value)
              Case "Integer", "Double", "Currency", "Byte", "Long", "Decimal", "Single"
                   .ColAlignment(X) = flexAlignRightCenter
              Case Else
                   .ColAlignment(X) = flexAlignLeftCenter
            End Select
         End If
     Next
     .Row = 0
     .Col = 0
     If .Rows > 1 Then .Row = 1
     .ColSel = .Cols - 1
     .Visible = True
  End With

 End Sub
#3
wxflw2014-10-18 19:44
回复 2 楼 snrtjat
TextWidth怎么走到这个属性提示错误了,
#4
adffdda2016-03-26 11:18
学习了!!
1