以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  快捷菜单中删除多行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=108386)

--  作者:kaituozhe
--  发布时间:2017/10/21 15:27:00
--  快捷菜单中删除多行

对快捷菜单中的行删除作了以下修改,希望删除多行该怎么修改?

For i As Integer = CurrentTable.TopPosition To CurrentTable.BottomPosition
    Dim r As Row = CurrentTable.Current
    Dim msg As String = "D#" & CurrentTable.DataTable.name & "#" & r("_Identify")
    r.Delete()
    CurrentTable.DataTable.Save()
    For Each bd As QQBuddy In QQClient.Buddies
        If bd.Online Then
            QQClient.Send(bd.name, msg)
        End If
    Next
Next


--  作者:有点蓝
--  发布时间:2017/10/21 15:44:00
--  
Dim msg As String = "D#" & CurrentTable.DataTable.name & "#"
For i As Integer = CurrentTable.BottomPosition To CurrentTable.TopPosition Step -1
    Dim r As Row = CurrentTable.Rows(i)
    msg &= r("_Identify") & ","
    r.Delete()
Next
msg = msg.Trim(",")
msgbox(msg)
CurrentTable.DataTable.Save()
For Each bd As QQBuddy In QQClient.Buddies
    If bd.Online Then
        QQClient.Send(bd.name, msg)
    End If
Next

注意由于是一次性发送了所有的删除行的id,而不是一行发送一条消息,所以接收事件要做相应的改动

ElseIf msg.StartsWith("D#") Then \'表示删除了行
    Dim pts() As String = msg.Split("#")
    If pts.Length = 3 Then
         DataTables(pts(1)).RemoveFor("[_Identify] in ("  & pts(2) & ")") \'移除行
    End If
End If

--  作者:kaituozhe
--  发布时间:2017/10/21 15:47:00
--  
ElseIf msg.StartsWith("D#") Then \'表示删除了行
这行代码是否是改为
If msg.StartsWith("D#") Then \'表示删除了行

--  作者:有点蓝
--  发布时间:2017/10/21 16:01:00
--  
代码来自这里:http://www.foxtable.com/webhelp/scr/3006.htm

根据自己实际情况参考使用