以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  应该是个Bug BeforeDeleteDataRow  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=53749)

--  作者:e-png
--  发布时间:2014/7/14 20:38:00
--  应该是个Bug BeforeDeleteDataRow
1、在订单表的 BeforeDeleteDataRow 设置代码:
With Tables("订单")
    For i As Integer = .BottomPosition  To.TopPosition Step -1
        output.show(i)
        If Tables("出库").count > 100   \' 出库表实际没有100行哦。。。 
            e.Cancel = True 
        End If
    Next
End With

2、在订单表手工选择N行,然后右键删除选择的行,会提示N个:
     Exception has been thrown by the target of an invocation. 的错误。。。

--  作者:有点甜
--  发布时间:2014/7/14 20:48:00
--  

 思路错了,不能这样写代码。如果是想阻止删除,就直接写

 

If Tables("出库").count > 100   \' 出库表实际没有100行哦...
    e.Cancel = True
End If

 

 每删除一行之前都会触发这儿事件的。


--  作者:e-png
--  发布时间:2014/7/14 21:32:00
--  
订单表的 BeforeDeleteDataRow: 这样也不行呢?
With Tables("订单")
    If .BottomPosition <> .TopPosition
        msgbox("静止删除多行")
        e.Cancel = True
    End If
End With

--  作者:有点甜
--  发布时间:2014/7/14 21:35:00
--  

 在这个事件,不能使用Table的一些属性,比如 BottomPosition 和 TopPosition,而且用这两个判断也是不准确的。

 

 用其它方法变通代替。


--  作者:e-png
--  发布时间:2014/7/15 9:36:00
--  
这就有点难了,现成的事件不能用可惜了。 (表的keyup事件也不能用某些属性,在AfterSelRangeChange属性中用,再给变量赋值来确定,再在BeforeDeleteDataRow中判断这个变量情况倒是可以,但是复杂些的判断时,每次选择时都会执行效率很差)

我要求是这样的:
0、要求允许删除多行,
1、在删除行前要判断是否是选择了多行;
2、在选择行中,是否在子表中有对应的记录(比如用编号关联)
3、上面的删除指定是“手工删除”。

注:上面要求的是(操作人)用手工右键删除多行,做个按钮我没问题的,不想按钮太多了。····· 呵呵。

--  作者:有点甜
--  发布时间:2014/7/15 9:38:00
--  

直接去控制菜单代码。


--  作者:e-png
--  发布时间:2014/7/15 10:10:00
--  
菜单是通用的,无法对具体的个表(包括窗口表)进行操作。
--  作者:有点甜
--  发布时间:2014/7/15 10:12:00
--  
以下是引用e-png在2014-7-15 10:10:00的发言:
菜单是通用的,无法对具体的个表(包括窗口表)进行操作。

 

系统菜单,不是可以修改的么?只是修改一下快捷菜单的代码而已。