以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  按住鼠标左键拖动 ,选中的行在复选框自动变成选中状态  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=76069)

--  作者:sf020cf
--  发布时间:2015/10/21 10:51:00
--  按住鼠标左键拖动 ,选中的行在复选框自动变成选中状态
我想按住鼠标左键拖动选中多行时 行前的复选框自动变成选中状态 能否做到实时响应 
--  作者:大红袍
--  发布时间:2015/10/21 10:56:00
--  

AfterSelRangeChange 事件

 

If  e.Table.BottomPosition - e.Table.TopPosition >= 1 Then
    For i As Integer = e.Table.TopPosition To e.Table.BottomPosition
        e.Table.Rows(i).Checked = True
    Next
End If


--  作者:sf020cf
--  发布时间:2015/10/21 11:48:00
--  
如果拖动时多出一行 回拉 行前的选中状态并没有因为i的数值变化而变化 
--  作者:大红袍
--  发布时间:2015/10/21 11:54:00
--  
If  math.abs(e.Table.BottomPosition - e.Table.TopPosition) >= 1 Then
    For i As Integer = e.Table.TopPosition To e.Table.BottomPosition
        e.Table.Rows(i).Checked = True
    Next
End If

--  作者:sf020cf
--  发布时间:2015/10/21 12:04:00
--  
出现一个问题 目录树点选节点时提示索引超出范围 
--  作者:大红袍
--  发布时间:2015/10/21 12:11:00
--  
你确定是4楼代码的问题么?不可能有错。
--  作者:sf020cf
--  发布时间:2015/10/21 12:34:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:2015-10-21_123423.jpg
图片点击可在新窗口打开查看



--  作者:sf020cf
--  发布时间:2015/10/21 12:45:00
--  
再描述清晰点 ,用代码
If  math.abs(e.Table.BottomPosition - e.Table.TopPosition) >= 1 Then
    For i As Integer = e.Table.TopPosition To e.Table.BottomPosition
        e.Table.Rows(i).Checked = True
    Next
End If

使用情况是 我按住鼠标左键拖动选中行 行前复选随之响应选中 但我在没有松开鼠标左键回拉时 (假如原来是5行最终我回拉了只选中3行) 行前复选选中依然是5行并未是最终的三行 
加入这段代码后 目录树 不可显示所有订单 我想是否是焦点问题 去掉代码 问题解决


--  作者:sf020cf
--  发布时间:2015/10/21 14:10:00
--  
最新结果 追然有提示错误 目录树点选节点依然有效 但需要忽略索引超出范围 
--  作者:大红袍
--  发布时间:2015/10/21 14:12:00
--  

代码

 

If  math.abs(e.OldRange.TopRow - e.OldRange.BottomRow) >= 1 Then
    If e.OldRange.BottomRow >= e.Table.Rows.count Then Return
    For i As Integer = e.OldRange.TopRow To e.OldRange.BottomRow
        e.Table.Rows(i).Checked = False
    Next
   
    For i As Integer = e.Table.TopPosition To e.Table.BottomPosition
        e.Table.Rows(i).Checked = True
    Next
   
   
End If