以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]记录窗口双击  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=111510)

--  作者:天一生水
--  发布时间:2017/12/23 11:53:00
--  [求助]记录窗口双击

在窗口表的双击事件中,如果列名的开头是“文书类别_”,双击后,就在单元格打上"√"。

代码如下:

For Each c As Col In Tables("编辑_table1").Cols
    If c.name.startswith("文书类别_") Then
     e.Row(CurrentTable.Cols(CurrentTable.ColSel).name) = "√"
    End If
Next

 

因为列太多,我把这些列放入记录窗口中,是在窗口的afterload事件中生成的记录窗口。

我想在记录窗口实现上述双击效果,应该怎样写代码?

谢谢!


--  作者:有点蓝
--  发布时间:2017/12/23 12:04:00
--  
需要手工绑定升级事件,参考:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=102193&skin=0
--  作者:天一生水
--  发布时间:2017/12/23 12:38:00
--  

加黑的这句代码怎么改?

绑定DoubleClick事件的代码放到窗口的timertick行吗?

 

1、全局代码

 

Public Sub TblBase_DoubleClick(ByVal sender As Object, ByVal e As C1.Win.C1FlexGrid.OwnerDrawCellEventArgs)
For Each c As Col In Tables("EMS编辑").Cols
    If c.name.startswith("文书类别_") Then
        e.Row.(CurrentTable.Cols(CurrentTable.ColSel).name) = "√"
    End If
Next
End Sub

-----------------------------

2、绑定DoubleClick事件

 

Dim brgd As C1.Win.C1FlexGrid.C1FlexGrid  = e.Form.Controls("RecordGrid1").basecontrol
AddHandler brgd.DoubleClick, AddressOf TblBase_DoubleClick
brgd.refresh


--  作者:有点蓝
--  发布时间:2017/12/23 14:23:00
--  
全局
Public Sub TblBase_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs)
Dim r As C1.Win.C1FlexGrid.Row = sender.Rows(sender.Rowsel)
If r(0).startswith(文书类别_") Then
    sender.FinishEditing
    r(1) = "√"
End If
End Sub

绑定放到窗口afterload事件
Dim brgd As C1.Win.C1FlexGrid.C1FlexGrid  = e.Form.Controls("RecordGrid1").basecontrol
AddHandler brgd.DoubleClick, AddressOf TblBase_DoubleClick

--  作者:天一生水
--  发布时间:2017/12/25 21:44:00
--  

老师,遇到个问题:

在记录窗口双击后,添加了"√",但是数据表中没有变化,是何原因?


--  作者:有点蓝
--  发布时间:2017/12/25 22:38:00
--  
全局代码只能写死表格了

Public Sub TblBase_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs)
Dim r As C1.Win.C1FlexGrid.Row = sender.Rows(sender.Rowsel)
If r(0).startswith("第一") Then
    sender.FinishEditing()
    Dim r1 As Row = Tables("表A").Current \'改为自己的表名
    If r1 IsNot Nothing Then
        r1(r(0)) = "√"
    End If
End If
End Sub

--  作者:天一生水
--  发布时间:2017/12/25 23:00:00
--  

另一个新问题,我有一个清除记录窗口文本的代码,把记录窗口的内容清除了,但是数据表没有跟着变,请老师再帮助看看,谢谢!        

Dim bctr = e.Form.Controls("RecordGrid1").BaseControl
For Each r As object In bctr.Rows
    r(1) = ""
Next


--  作者:有点蓝
--  发布时间:2017/12/25 23:01:00
--  
去清除对应的表格的当前行,不要清除记录窗口
--  作者:天一生水
--  发布时间:2017/12/26 9:50:00
--  

Dim str as string = tables("表A").current("文书类别_A")

Str = ” ”

Dim str1 as string = tables("表A").current("文书类别_B")

Str1 = ” ”

......

假如当前行有20几个多层表头相同的列值要清除,能否简化一下代码?

谢谢!


--  作者:有点甜
--  发布时间:2017/12/26 10:07:00
--  
For Each c As Col In Tables("表A").cols
    If c.name.Contains("文书类别_") Then
        c.Table.Current(c.name) = Nothing
    End If
Next