以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  AfterSelRangeChange  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=127033)

--  作者:yetle
--  发布时间:2018/11/3 14:13:00
--  AfterSelRangeChange

AfterSelRangeChange


If vars("stop") = True Then Return
If ModifierKey <> Keys.Control Then
    For Each p As String In ps
        If p >= 0 Then
            For i As Integer = 1 To e.Table.Cols.count
                e.Table.Grid.SetCellStyle(p+1, i, "")
            Next
        End If
    Next
    ps.clear
End If

For i As Integer = e.NewRange.TopRow To e.NewRange.BottomRow
    Dim p As String = i
    If i >= 0 AndAlso  ps.contains(p) = False Then
        ps.add(p)
    End If
Next

For Each p As String In ps
    
    If p >= 0  Then
        Dim s As C1.Win.C1FlexGrid.CellStyle = e.Table.grid.Styles.Add("selected")
        s.backcolor = Color.red \'背景
        For i As Integer = 1 To e.Table.Cols.count
            e.Table.Grid.SetCellStyle(p+1, i, s)
        Next
        
        e.Table.DataTable.SysStyles("Focus").BackColor = Color.red
        
    End If
Next


.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2018.10.9.1
错误所在事件:
详细错误信息:
在 Range 对象中,Min (48)必须小于或等于 max (-1)。


--  作者:有点蓝
--  发布时间:2018/11/3 14:18:00
--  
上传具体实例测试
--  作者:yetle
--  发布时间:2018/11/5 11:54:00
--  
这个问题排查出来了,是currentchanged条件问题,可是有时候选择行的时候会出现下提示:
.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2018.10.9.1
错误所在事件:配色表,AfterSelRangeChange
详细错误信息:
索引超出范围。必须为非负值并小于集合大小。
参数名: index

[此贴子已经被作者于2018/11/5 11:54:29编辑过]

--  作者:有点甜
--  发布时间:2018/11/5 12:22:00
--  
这个问题,必须实例发上来测试。
--  作者:yetle
--  发布时间:2018/11/6 10:03:00
--  
测试是由这段代码引起的   
 If Forms("大货用量表").Opened() \'一定要判断用于模拟关联表的窗口是否已经打开
    Dim t As Table = Tables("配色表")
    Dim b As Table = Tables("配码表")
    With Tables("大货用量表_Table1")
        If .rows.count > 0 Then \'如果选定区域包括数据行
            Dim ids As String = ""
            For i As Integer = .TopPosition To .BottomPosition
                ids &= "\'" & .Rows(i)("物料基本信息_物料ID") & "\',"
            Next
            t.Filter = "物料ID in (" & ids.trim(",") & ") "
            b.Filter = "物料ID in (" & ids.trim(",") & ") "            
        End If
    End With
      t.sort = "颜色信息"
      b.sort = "尺码信息"
   End If

--  作者:有点甜
--  发布时间:2018/11/6 10:16:00
--  

beforesort、aftersort 你写代码设置 vars("stop") 了没有?

 

具体出错实例发上来测试才行。