以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  CurrentChanged事件问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=133240)

--  作者:ZJZK2018
--  发布时间:2019/4/10 13:49:00
--  CurrentChanged事件问题
我在全局表事件中写下面代码,解决了窗口副表与主表行位置联动,现在的需求是能否写一个通用代码来解决主表与窗口副表行位置联动问题?如何写代码,写在哪里??谢谢

If e.Table.Current Is Nothing Then   \'如果Current为Nothing
    Return
Else
    Dim dr As DataRow = e.Table.Current.DataRow
    Dim tb As Table = Tables(e.Table.DataTable.Name)
    Dim wz As Integer = tb.FindRow(dr)
    If wz >= 0 Then
        Systemready = False
        tb.Position = wz
        Systemready = True
        tb.Refresh   \'\'表的行标不显示问题
    End If
End If


--  作者:有点甜
--  发布时间:2019/4/10 15:17:00
--  

参考

 

http://www.foxtable.com/webhelp/scr/2631.htm

 


--  作者:ZJZK2018
--  发布时间:2019/4/16 1:03:00
--  
下面是一个通用代码来解决主表与窗口副表行位置联动,请老师审核一下是否有问题,我测试还可以?

\'\'表A选定某行时,副本Table也能同步选定同一样

For Each frm As WinForm.Form In Forms   遍历所有窗口

    If frm.Opened() Then    判断窗口已打开

        For Each ct As Object In frm.Controls

            If Typeof ct Is WinForm.Table Then

                If ct.Visible = True AndAlso ct.Table.DataTable.Name.Contains(e.Table.DataTable.Name) Then

                    If e.Table.Current Is Nothing Then  Return

                    Dim dr1 As DataRow = e.Table.Current.DataRow

                    Dim wz1 As Integer = ct.Table.FindRow(dr1)

                    If wz1 >= 0 Then

                        Systemready = False

                        ct.Table.Position = wz1

                        Systemready = True

                        e.Table.Refresh   \'表的行标不显示问题

                    End If

                End If

            End If

        Next

    End If

Next



 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:主表与副表当前行.table



--  作者:有点甜
--  发布时间:2019/4/16 9:14:00
--  

 

If e.Table.Current Is Nothing Then  Return

 

改成

 

If e.Table.Current Is Nothing Then  continue for