Foxtable(狐表)用户栏目专家坐堂 → [求助]如何实现多区域选择


  共有6255人关注过本帖树形打印复制链接

主题:[求助]如何实现多区域选择

帅哥哟,离线,有人找我吗?
有点甜
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/10 12:03:00 [显示全部帖子]

以下是引用ajie5211在2018/1/10 11:49:00的发言:

使用中发现,一个窗口中,如果有两个表,一个主表,一个非关联的关联表,在表事件CurrentChanged中,实时load关联表数据时,程序就不计算了,颜色也出错了。

 

实例发上来测试。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/10 16:06:00 [显示全部帖子]

去看currentTableChanged事件

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

 


 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/10 18:27:00 [显示全部帖子]

If ModifierKey <> Keys.Control Then
    For Each p As String In _ps
        Dim ary() As String = p.Split(",")
        If ary(0) >= 0 AndAlso ary(1) >= 0 Then
            If e.Table.grid.Rows.count > ary(0) + hdr AndAlso e.Table.grid.Cols.count > ary(1) + 1
                e.Table.Grid.SetCellStyle(ary(0) + hdr, ary(1)+1, "")
            End If

        End If
    Next
    _ps.clear
End If

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/11 8:49:00 [显示全部帖子]

以下是引用ajie5211在2018/1/11 8:41:00的发言:

这代码是写到哪个全局表事件中?还是自己整个内部函数,在移除数据时,先用一下这个代码?

 

修改原来事件的代码,加上红色的代码。

 

全局表AfterSelRangeChange事件。

[此贴子已经被作者于2018/1/11 8:50:26编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/1 10:11:00 [显示全部帖子]

上传实例和截图,说明要怎么不对,要怎么计算。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/1 11:25:00 [显示全部帖子]

        Dim cval = e.Table(cint(ary(0)), cint(ary(1)))

 

改成

 

        Dim cval = e.Table.Rows(cint(ary(0)),True)(cint(ary(1)))


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/28 17:29:00 [显示全部帖子]

表属性,currentChanged事件,写代码

 

If e.Table.Current Is Nothing Then '如果Current为Nothing
    Return '则返回
End If
If Forms("冲压生产计划追踪表").Opened = True Then
    Dim zzan As WinForm.Button = Forms("冲压生产计划追踪表").Controls("终止")
    If zzan.Text = "终止" Then
        If e.Table.Current("状态") = "已终止" Then
            zzan.text = "恢复"
        End If
    Else
        If e.Table.Current("状态") <> "已终止" Then
            zzan.text = "终止"
        End If
    End If
    Dim kb As WinForm.SplitContainer = Forms("冲压生产计划追踪表").Controls("SplitContainer1")
    If kb.Panel2.Collapsed = False Then
        If ModifierKey <> Keys.Control Then
            Dim t As Table = e.Table
            Dim hdr = t.HeaderRows
            For Each p As String In _ps
                Dim ary() As String = p.Split(",")
                If ary.Length = 2 Then
                    If ary(0) >= 0 AndAlso ary(1) >= 0 Then
                        If t.grid.Rows.count > ary(0) + hdr AndAlso t.grid.Cols.count > ary(1) + 1
                            t.Grid.SetCellStyle(ary(0) + hdr, ary(1)+1, "")
                        End If
                    End If
                End If
            Next
            _ps.clear
            t.refresh

            DataTables("冲压生产计划追踪表_Table1").LoadFilter = "销售单号 = '" & e.Table.Current("制令单号") & "'"
            DataTables("冲压生产计划追踪表_Table1").load()
            DataTables("冲压生产计划追踪表_Table3").LoadFilter = "{进出库与制令单号关联表}.制令单号 = '" & e.Table.Current("制令单号") & "' and 出入库类型 = '出库'"
            DataTables("冲压生产计划追踪表_Table3").load()
            DataTables("冲压生产计划追踪表_Table4").LoadFilter = "{进出库与制令单号关联表}.制令单号 = '" & e.Table.Current("制令单号") & "' and 出入库类型 = '入库'"
            DataTables("冲压生产计划追踪表_Table4").load()
            Tables("冲压生产计划追踪表_Table1").AutoSizeRows()
            Tables("冲压生产计划追踪表_Table3").AutoSizeRows()
            Tables("冲压生产计划追踪表_Table4").AutoSizeRows()
            If Tables("冲压生产计划追踪表_Table4").Current IsNot Nothing Then
                Tables("冲压生产计划追踪表_Table4").Select(0,0)
            End If
            DataTables("冲压生产计划追踪表_Table5").DataRows.Clear()
            Dim drs As new List(of DataRow)
            Dim pd As Integer = 0
            If Tables("冲压生产计划追踪表_Table3").Rows.Count >= Tables("冲压生产计划追踪表_Table4").Rows.Count Then
                drs = DataTables("冲压生产计划追踪表_Table3").Select("","日期")
                pd = 1
            Else
                drs = DataTables("冲压生产计划追踪表_Table4").Select("","日期")
                pd = 2
            End If
            If drs.Count > 0 Then
                If pd = 1 Then
                    For Each dr As DataRow In drs
                        Dim xdr As DataRow = DataTables("冲压生产计划追踪表_Table5").AddNew()
                        xdr("领料日期") = dr("日期")
                        xdr("领料数量") = dr("分到订单量")
                        xdr("领料批号") = ""
                        xdr("领料签收") = ""
                        xdr("制令单号") = dr("制令单号")
                    Next
                    drs = DataTables("冲压生产计划追踪表_Table4").Select("","日期")
                    For i As Integer = 0 To drs.Count - 1
                        Dim xdr As Row = Tables("冲压生产计划追踪表_Table5").Rows(i)
                        xdr("入库日期") = drs(i)("日期")
                        xdr("入库数量") = drs(i)("分到订单量")
                        xdr("入库签收") = ""
                        xdr("入库备注") = drs(i)("备注")
                        xdr("入库批号") = drs(i)("单号")
                    Next
                Else If pd = 2 Then
                    For Each dr As DataRow In drs
                        Dim xdr As DataRow = DataTables("冲压生产计划追踪表_Table5").AddNew()
                        xdr("入库日期") = dr("日期")
                        xdr("入库数量") = dr("分到订单量")
                        xdr("入库签收") = ""
                        xdr("入库备注") = dr("备注")
                        xdr("入库批号") = dr("单号")
                        xdr("制令单号") = dr("制令单号")
                    Next
                    drs = DataTables("冲压生产计划追踪表_Table3").Select("","日期")
                    For i As Integer = 0 To drs.Count - 1
                        Dim xdr As Row = Tables("冲压生产计划追踪表_Table5").Rows(i)
                        xdr("领料日期") = drs(i)("日期")
                        xdr("领料数量") = drs(i)("分到订单量")
                        xdr("领料批号") = ""
                        xdr("领料签收") = ""
                    Next
                End If
            End If
        End If
    Else
        Return
    End If
   
End If


 回到顶部