For m_Col = 0 To Flex.Cols - 1
If Result.ColumnType(m_Col + 1) = SQLDMO_DTypeChar Then
Flex.ColWidth(m_Col) = 1000
ElseIf Result.ColumnType(m_Col + 1) = SQLDMO_DTypeInt4 Then
Flex.ColWidth(m_Col) = 1000
ElseIf Result.ColumnType(m_Col + 1) = SQLDMO_DTypeInt1 Then
Flex.ColWidth(m_Col) = 800
Else
Flex.ColWidth(m_Col) = 1500
End If
Flex.TextMatrix(0, m_Col) = EngToCha(Result.ColumnName(m_Col + 1))
Next m_Col
If Result.ColumnType(m_Col + 1) = SQLDMO_DTypeChar Then
Flex.ColWidth(m_Col) = 1000
ElseIf Result.ColumnType(m_Col + 1) = SQLDMO_DTypeInt4 Then
Flex.ColWidth(m_Col) = 1000
ElseIf Result.ColumnType(m_Col + 1) = SQLDMO_DTypeInt1 Then
Flex.ColWidth(m_Col) = 800
Else
Flex.ColWidth(m_Col) = 1500
End If
Flex.TextMatrix(0, m_Col) = EngToCha(Result.ColumnName(m_Col + 1))
Next m_Col
用法 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