以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]为什么有的RecordGrid控件要点击两下才能选中  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=99889)

--  作者:jyh7081
--  发布时间:2017/4/28 18:17:00
--  [求助]为什么有的RecordGrid控件要点击两下才能选中
窗口中的页面集合分别放入了多个RecordGrid控件,除第一个外,其余的都需要点击两次才能出现单元格选中框,是何原因?
[此贴子已经被作者于2017/4/28 18:17:46编辑过]

--  作者:有点色
--  发布时间:2017/4/28 18:32:00
--  

 你的 RecordGrid 放在容器里面了?Tabcontrol?

 

 做个例子上来


--  作者:jyh7081
--  发布时间:2017/4/28 18:58:00
--  

对,Tabcontrol1的四个页面,各放了一个RecordGrid

 

可能是绑定表的afterselchang中这段事件代码,没包括RecordGrid2/3/4的原因

 

If e.OldRange.ColSel <> e.NewRange.ColSel AndAlso e.NewRange.RowSel >= 0
    If Forms("记录窗口录入").Opened
            Dim rg As WinForm.RecordGrid = Forms("记录窗口录入").Controls("RecordGrid1")
            rg.Select()
            Dim rgb  = rg.BaseControl
            Dim cname As String = e.Table.Cols(e.NewRange.ColSel).Name
            For i As Integer = 0 To rgb.Rows.count-1
                If rgb(i, 0) = cname Then
                    rgb.Select(i, 1)
                End If
            Next
        Next
    End If

 

以前用过的代码,注释掉以后就好了,谢谢版主!

 

[此贴子已经被作者于2017/4/28 20:19:24编辑过]

--  作者:jyh7081
--  发布时间:2017/5/3 15:50:00
--  
老师,我做了个例子,就是我一楼说的问题:窗口页面集合中的page1,要点击2次记录窗口才能出现焦点框,page2只需要一次。
表A的AfterSelChange代码:

If e.OldRange.ColSel <> e.NewRange.ColSel AndAlso e.NewRange.RowSel >= 0
    If Forms("窗口1").Opened
        For i As Integer = 1 To 2 
            Dim rg As WinForm.RecordGrid = Forms("窗口1").Controls("RecordGrid" & i)
            rg.Select()
            Dim rgb  = rg.BaseControl
            Dim cname As String = e.Table.Cols(e.NewRange.ColSel).Name
            For i2 As Integer = 0 To rgb.Rows.count-1
                If rgb(i2, 0) = cname Then
                    rgb.Select(i2, 1)
                End If
            Next
        Next
    End If
End If

附件:
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:记录窗口目录.table


--  作者:有点色
--  发布时间:2017/5/3 16:03:00
--  

If e.OldRange.ColSel <> e.NewRange.ColSel AndAlso e.NewRange.RowSel >= 0
    If Forms("窗口1").Opened
        Dim rg As WinForm.RecordGrid = Forms("窗口1").Controls("RecordGrid" & (Forms("窗口1").Controls("TabControl2").selectedindex+1))
        rg.Select()
        Dim rgb  = rg.BaseControl
        Dim cname As String = e.Table.Cols(e.NewRange.ColSel).Name
        For i2 As Integer = 0 To rgb.Rows.count-1
            If rgb(i2, 0) = cname Then
                rgb.Select(i2, 1)
            End If
        Next
    End If
End If

--  作者:jyh7081
--  发布时间:2017/5/4 14:27:00
--  

版主,假如这个窗口中有两个页面集合 TabControl2、TabControl3,相互联动,上面的第三行代码这样改怎么不行?

 

Dim rg As WinForm.RecordGrid = Forms("窗口1").Controls("RecordGrid" & (Forms("窗口1").Controls("TabControl2" or ”TabControl3”).selectedindex+1))


--  作者:有点色
--  发布时间:2017/5/4 15:29:00
--  

 你的RecordGrid控件的名,要命名为 1、2、3 这样;

 

 在TabControl控件里,1放在page1里,2放在page2里,3放在page3里,5楼的代码就不用改。


--  作者:有点色
--  发布时间:2017/5/4 15:30:00
--  

 如果你有多个需要联动,你就要拷贝多段,或者写成循环。