以文本方式查看主题 - 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 -- [求助] 解锁行需要密码....
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 -- 这个功能不会内置的,因为不具备普片性。解锁过程中需要输入密码。单独设置比较好。 |