我把它放在了frame里面,用于显示数据库返回的信息,由于每个字段信息长短相差很大,我希望它能够相应改变每一栏的宽度,请问该怎么做?它能自动改变吗?
最好请大虾给出代码。

解决方案 »

  1.   

    MSHFlexGrid1.ColWidth(1) = 100(调整第二列)
      

  2.   

    '*********************************************************
    '* 名称:FlexRedraw
    '* 功能:表格的格式化
    '* 用法:FlexRedraw(控件名)
    '*********************************************************
    Public Function FlexRedraw(F As MSHFlexGrid) As String
        With F
            .Redraw = False  '禁止重画,防止闪动
            .BackColorFixed = RGB(190, 218, 178)  '标题行背景色
            .Row = 0         '设置标题行文字的对其方式
            .Col = 0
            .ColSel = .Cols - 1
            .CellForeColor = vbBlue '标题行文字颜色
            .CellAlignment = 4   '对其方式为中间中间
            .Width = 125         '宽度
            .ScrollTrack = True  '移动滚动条的同时数据也滚动
            For I = .FixedRows To .Rows - 1 '单双行表格条纹背景色显示
                .Row = I          '选择第I行
                .Col = .FixedCols
                .ColSel = .Cols - 1
                If I / 2 = Int(I / 2) Then '判断是单是双
                    .CellBackColor = RGB(224, 248, 224)   '双行的底色
                Else
                    .CellBackColor = RGB(240, 248, 224)    '单行的底色
                End If
            Next I
        
            .Row = 1
            .Col = 1
            .ColSel = .Cols - 1
            .Redraw = True '允许重画,显示表格
        End With
    End Function
      

  3.   

    Private Sub Command1_Click()
            Dim I As Long
            
            With MSHFlexGrid1
            
            .Rows = 10
            .Cols = 10
            For I = 0 To .Cols - 1
                .ColWidth(I) = 1200
            Next
            '.ColWidth(-1) = 1200'将所有列宽设为1200
            End With
    End Sub
      

  4.   

    MSHFlexGrid1.ColWidth(1) = 100
      

  5.   

    分行顯示也可以嘛,用chr(13)換就可以了
      

  6.   

    MSHFlexGrid1.ColWidth(0) = "700"
    MSHFlexGrid1.ColWidth(1) = "2300"
    MSHFlexGrid1.ColWidth(2) = "1600"
    MSHFlexGrid1.ColWidth(3) = "2000"
    MSHFlexGrid1.ColWidth(4) = "2800"
    MSHFlexGrid1.ColWidth(5) = "1000"
    MSHFlexGrid1.ColWidth(6) = "2000"
    MSHFlexGrid1.ColWidth(7) = "2800"
      

  7.   

    如果单元的文本过长而不能在该单元中显示,而且 WordWrap 属性被设置为 True,那么文本就会换行到同一单元内的下一行。为了显示换行的文本,可能需要增加单元的列宽度(ColWidth 属性)或者行高度(RowHeight 属性)。
    用len测长度,chr(13)换行就行了.