用MSHFlexGrid1绑字一个recordset 后,
再如下操作
Dim i As Integer
Dim s As StringFor i = 0 To Me.MSHFlexGrid1.Cols - 1
    s = s & Me.MSHFlexGrid1.ColWidth(i) & "|"NextDebug.Print s得到如下结果
-1|-1|-1|-1|-1|-1|-1|-1|-1|-1|-1|-1|为什么是这个样子呢???明明列宽存在,还很大呀.
全是-1 ??????
有没有人能给个说法.

解决方案 »

  1.   

    先将行制定,然后在输出,即在循环之前加 Me.MSHFlexGrid1.Row=1
      

  2.   

    -1应该是没有设定列宽的默认数值
    你把列表的允许用户调整打开,然后拖动一下列头就可以得出colwidth了
      

  3.   

    to   kkkksunday(啊呀) 
    你说的法子可不能用呀.那我要每次都让用户手动调整,记录下这个有啥用?
    我就是要记下后以后永远都可以自动设定到上次的保存值.
      

  4.   

    默认情况下,ColWidth就是-1吧?你可以根据需要设置每一列的宽度
      

  5.   

    每次从文件里面读出ColWidth 然后设置宽度
      关闭程序的时候再把这些宽度值写如文件里面
      就可以了!!
      第一次使用你可以设定初始值
      

  6.   

    我已把設定保存在注冊表中了,每次退出窗口時保存.load data時getsetting.再設定grid的列寬.
    但是這樣不好用.效果不好.也是在查問題時才發現,為什麼沒設過的會是-1哩?但現在還沒有辦法解決這個問題.
      

  7.   

    我的做法是读出列宽后保存在ini文件中。
    保存的形式是:[宽]
    eg:[10][9][9][10]
      

  8.   

    可能是MSHFlexGrid的BUG!
    用以下方法吧:
        Dim i As Integer
        Dim s As String
        MSHFlexGrid1.Row = 1
        For i = 0 To Me.MSHFlexGrid1.Cols - 1
            MSHFlexGrid1.Col = i
            s = s & Me.MSHFlexGrid1.CellWidth & "|"
        Next
        MSHFlexGrid1.Col = 1
        Debug.Print s
      

  9.   

    to hn123(www.vicmiao.com) 
    我只是保存在注册表里,跟你一样呀.
    但是效果不好,不知道从什么时候开始这些东东就不好用了,就又回到以前没有设定过的一个状态了.
    我正是为此事才发的贴.
    希望多交流一下.