在BeforeSort和AfterSort事件中写了一些代码后,再单击列标题排序时列标题就不再显示那个上下的小图标了,不知道是怎么回事?

解决方案 »

  1.   

    ExplorerBar 属性(value=0|1|2|3|5|7|8):
      0-flexExNone:默认,单击列头选择整列,单击行头选择整行
      1-flexExSort:单击列头可正反排序该列,单击行头选择整行
      2-flexExMove:单击列头可交换列顺序,单击行头选择整行
      3-flexExSortAndMove:具有 1 和 2 的功能
      4:单击列头可正反排序该列并在列头显示相应箭头,单击行头选择整行
      5-flexExSortShow:好像与 4 相同也
      6:具有 2 和 4 的功能
      7-flexExSortShowAndMove:好像与 6 相同也
      8-flexExMoveRows:单击列头选择整列,可拖动行
      9:单击列头可正反排序该列,可拖动行
      10:可拖动行与列
      11:可排序列及拖动行列
      12:可排序列并在列头显示相应箭头,还可拖动行
      13:同 12。
      14:除 12 功能外,可拖动列
      15:同 14。
      

  2.   

    这里有个TXT
      

  3.   

    我用的是vsflexgrid8,ExplorerBar 属性设置为:7-flexExSortShowAndMove
    有些窗体中的能显示排序图标,有的不能显示,不知道是怎么回事!
      

  4.   

    不能排序的控件的初始列是1 -- 是什么意思,col1 hidden?
      

  5.   

    回楼上的:初始列是1的意思就是控件的Cols是1,也就是只有一个固定列,其它各列都是用vsgrid.cols=vsgrid.cols+1 的方式增加的
      

  6.   

    我试了像你那样加col,没见你的问题。上点和sort有关的代码。
      

  7.   


    Private Sub vsGrid1_BeforeSort(ByVal Col As Long, Order As Integer)
    '排序前先删除合计的行
        Dim intLoop As Integer    For intLoop = vsGrid1.Rows - 1 To 1 Step -1
            If vsGrid1.TextMatrix(intLoop, 0) = "合计" Then
                vsGrid1.RemoveItem intLoop
            End If
        Next
        vsGrid1.Refresh
    End SubPrivate Sub vsGrid1_AfterSort(ByVal Col As Long, Order As Integer)
    '排序后再重新进行合计和小计
    On Error GoTo ErrProc    Dim intLoop As Integer    '添加合计行
        vsGrid1.AddItem ""
        vsGrid1.TextMatrix(vsGrid1.Rows - 1, 0) = "合计"
        vsGrid1.Cell(flexcpBackColor, vsGrid1.Rows - 1, 1, vsGrid1.Rows - 1, vsGrid1.Cols - 1) = RGB(153, 204, 255)
        vsGrid1.Cell(flexcpData, vsGrid1.Rows - 1, 1, vsGrid1.Rows - 1, vsGrid1.Cols - 1) = flexDTString    '重新显示行号
        For intLoop = 1 To vsGrid1.Rows - 2
            vsGrid1.TextMatrix(intLoop, 0) = intLoop
        Next    Call ShowCount    vsGrid1.Refresh
        
        Exit SubErrProc:
        MsgBox "错误代码:" & Err.Number & vbCrLf & "错误原因:" & Err.Description
    End Sub
    与Sort有关的代码就是上面两段,在排序前先删除合计行,排序后再重新显示合计行
      

  8.   

    AllowUserResizing = flexResizeColumns 拉长一点看看。
    可能是autosize后,的宽度不能显示图标