大侠救我

解决方案 »

  1.   

    可以自己写啊 
    定义一个变量保存字段的最大长度
    在付给MSFlexGrid 所在的单元格
      

  2.   

    只能自己计算宽度,没有这样的功能。用TextWidth可以计算出宽度。
      

  3.   

    自己计算吧,用TextWidth计算,再用ScaleX将单位转换成你窗口的单位就可以了~~
      

  4.   

    ScaleX、ScaleY 方法用以将 Form,PictureBox 或 Printer 的宽度或高度值从一种 ScaleMode 属性的度量单位转换到另一种。不支持命名参数。语法object.ScaleX (width, fromscale, toscale)
    object.ScaleY (height, fromscale, toscale)ScaleX 和 ScaleY 方法的语法包含如下部分:部分 描述
    object 可选的。一个对象表达式 ,该对象一定能在“应用于”列表中找到。如果省略 object,则带有焦点的 Form 对象缺省为 object。
    width 必需的。为 object 指定被转换的度量单位的数量。
    height 必需的。为 object 指定被转换的度量单位的数量。 
    fromscale 可选的。一个常数或数值,按照下列设置中的描述,指定 object 的 width 或 height 从哪一种坐标系统转换。fromscale 可取的数值与 ScaleMode 属性的数值加上 HiMetric 的新数值相同。
    toscale 可选的。一个常数或数值,按照下列设置中的描述,指定 object 的 width 或 height 转换到哪一种坐标系统。toscale 可取的数值与 ScaleMode 属性的数值加上 HiMetric 的新数值相同。
    设置用于 fromscale 和 toscale 设置有:常数 数值 描述
    vbUser 0 用户定义:指示 object 的宽度和高度设置为自定义值。
    vbTwips 1 缇(每逻辑英寸 1440 缇;每逻辑厘米 567 缇)。
    vbPoints 2 磅(每逻辑英寸 72 点)。
    vbPixels 3 像素 (显示器或打印机分辨率的最小单位)。
    vbCharacters 4 字符(水平 = 每单位 120 缇,垂直 = 每单位 240 缇)。
    vbInches 5 英寸
    vbMillimeters 6 毫米
    vbCentimeters 7 厘米
    vbHimetric 8 HiMetric。如果省略 fromscale,则 HiMetric 为缺省值。
    vbContainerPosition 9 决定控件位置。
    vbContainerSize 10 决定控件大小。
    说明ScaleX 和 ScaleY 方法按 fromscale 指定的度量单位取值(width 或 height),并将它转换为 toscale 指定的度量单位下相应的值。
    也可以结合 PaintPicture 方法使用 ScaleX 和 ScaleY。
      

  5.   

    求表格每一列的最大字符数的长度,再将长度转换成列的宽度'最大字符数的长度:
    Dim L1 As Integer    'L1表示某一列的最大字符数
    Dim i As Integer
        For i = 1 To MSFlexGrid1.Rows
            If Len(Trim(MSFlexGrid1.TextMatrix(i, 1))) > L1 Then
                L1 = Len(Trim(MSFlexGrid1.TextMatrix(i, 1)))
            End If
        Next i
    '转换成列的宽度
    MSFlexGrid1.ColWidth(1) = L1 * 300    '一个汉字用300,字母用1500
      

  6.   

    用TextWidth计算你每次放入单元格的文字长度,取其中最大的一个设定为你单元格的宽度!vc也是这样处理的了!
      

  7.   

    这是我刚改过的,保证显示 标题和信息Dim L1 As Integer    'L1表示某一列的最大字符数
    Dim i As Integer
    Dim L2 As Integer    For i = 1 To MSFlexGrid1.Cols - 1
                L1 = Len(Trim(MSFlexGrid1.TextMatrix(1, i)))
                 L2 = Len(Trim(MSFlexGrid1.TextMatrix(0, i)))
                If Len(Trim(MSFlexGrid1.TextMatrix(1, i))) < Len(Trim(MSFlexGrid1.TextMatrix(0, i))) Then
                 MSFlexGrid1.ColWidth(i) = L2 * 300
                 Else
                 MSFlexGrid1.ColWidth(i) = L1 * 300
                 End If
                 
        Next i
      

  8.   

    对啊!!数字右对齐,文字和英文左对齐,我也正郁闷这!
    还有怎么判断选定的是哪个行啊,我想用这个控制一个LIST的位置!!LIST显示此行内容!
      

  9.   

    求表格每一列的最大字符数的长度,再将长度转换成列的宽度'最大字符数的长度:
    Dim L1 As Integer    'L1表示某一列的最大字符数
    Dim i As Integer
        For i = 1 To MSFlexGrid1.Rows
            If Len(Trim(MSFlexGrid1.TextMatrix(i, 1))) > L1 Then
                L1 = Len(Trim(MSFlexGrid1.TextMatrix(i, 1)))
            End If
        Next i
    '转换成列的宽度
    MSFlexGrid1.ColWidth(1) = L1 * 300
      

  10.   

    Private Sub adjustColWidth()
    Dim Max As Integer
    Dim i As Integer
    Dim j As interger
    For j = 0 To MSFlexGrid1.Cols - 1
        Max = 0
        For i = 0 To MSFlexGrid1.Rows - 1
            If Len(Trim(MSFlexGrid1.TextMatrix(i, j))) > Max Then Max = Len(Trim(MSFlexGrid1.TextMatrix(i, j)))
        Next i
        MSFlexGrid1.ColWidth(j) = Max * 300
    Next j
    End Sub
      

  11.   

    这个方案更好
    Dim i, j As Integer
        Dim Max As Double
        With MSFlexGrid1
            For i = 0 To .Cols - 1
                Max = 0
                If .ColWidth(i) <> 0 Then
                    For j = 0 To .Rows - 1
                        If Me.TextWidth(.TextMatrix(j, i)) > Max Then
                            Max = Me.TextWidth(.TextMatrix(j, i))
                        End If
                    Next
                    .ColWidth(i) = Max + 110
                End If
            Next
        End With