以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 解锁行需要密码....  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=28662)

--  作者:小肥牛
--  发布时间:2013/2/7 17:32:00
--  [求助] 解锁行需要密码....
 菜单->数据表->表属性->事件->DataRowLockedChanging
static flag As Integer = 0
Dim t As Table = Tables(e.DataTable.Name)
If e.DataRow.locked Then
    If flag = 0 Then
        e.Cancel = True
        Dim pwd As String
        If InputPassWord(pwd,"提示","请输入密码:") Then
            If pwd = "123456" Then
                flag = 1
            End If
        End If
    Else If flag = 1 Then
        e.Cancel = True
    Else If flag = 2 Then
        
    End If
End If

If t.BottomPosition = t.FindRow(e.DataRow) Then
    If flag = 1 Then
        flag = 2
        For i As Integer = t.TopPosition To t.BottomPosition
            t.Rows(i).Locked = False
        Next
    End If
    flag = 0
End If

上述代码是想 锁定的行在解锁的时候需要输入密码,这样可以减少误操作。代码由lin_hailun提供,在此感谢!
但是代码经过本人测试出现如下问题,烦请各路大神优化一下,有更简短的更好;1、输入错的密码没有任何提示(如果有这样的提示:密码错误,请重试!效果感觉好点)。2、如果选中5行,点击解锁,出现密码框,若此时不想输入密码 就得在密码框上进行5次取消,或5次确定,或5次关闭按钮。但是实际上需要的只是一次取消即可!

[此贴子已经被作者于2013-2-7 17:35:56编辑过]

--  作者:lin_hailun
--  发布时间:2013/2/16 13:58:00
--  
 这样应该就可以了。

static flag As Integer = 0
Dim t As Table = Tables(e.DataTable.Name)
If e.DataRow.locked Then
    If flag = 0 Then
        e.Cancel = True
        Dim pwd As String
        If InputPassWord(pwd,"提示","请输入密码:") Then
            If pwd = "123456" Then
                flag = 1
            End If
        Else
            flag = 2
        End If
    Else If flag = 1 Then
        e.Cancel = True
    Else If flag = 2 Then
        e.Cancel = True
    End If
End If

If t.BottomPosition = t.FindRow(e.DataRow) Then
    If flag = 1 Then
        flag = 3
        For i As Integer = t.TopPosition To t.BottomPosition
            t.Rows(i).Locked = False
        Next
    End If
    flag = 0
End If

--  作者:TGGSTGGS
--  发布时间:2013/2/16 14:05:00
--  

批量锁定行,批量解锁行应在FOXTABL表内部设计个功能。


--  作者:lin_hailun
--  发布时间:2013/2/16 14:09:00
--  
 这个功能不会内置的,因为不具备普片性。解锁过程中需要输入密码。单独设置比较好。