以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何用表的字段限制窗口的按键?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=185891)

--  作者:lin98
--  发布时间:2023/3/23 22:01:00
--  如何用表的字段限制窗口的按键?
如何用表的字段限制窗口的按键?需求如下
如果 表A的(审核)字段=True
窗口1的按键1,为可编辑
窗口1的按键2,为不可编辑
窗口1的按键3,为不可编辑
否则
窗口1的按键1,为不可编辑
窗口1的按键2,为可编辑
窗口1的按键3,为可编辑

--  作者:有点蓝
--  发布时间:2023/3/23 22:17:00
--  
表A,currentchanged事件

if e.table.current isnot nothing andalso forms("窗口1").opened then
if e.table.current("审核")=true
forms("窗口1").controls("按键1").enabled = true
forms("窗口1").controls("按键2").enabled = false
……
else
forms("窗口1").controls("按键1").enabled = false
forms("窗口1").controls("按键2").enabled = true
……
end if
end if

--  作者:lin98
--  发布时间:2023/3/24 9:56:00
--  
\'表A,PrepareEdit事件

If e.Table.current IsNot Nothing AndAlso forms("窗口1").opened Then
    If e.Table.current("审核") = True Then
        forms("窗口1").controls("按键1").enabled = True
        forms("窗口1").controls("按键2").enabled = False
        forms("窗口1").controls("按键3").enabled = False
    Else
        forms("窗口1").controls("按键1").enabled = False
        forms("窗口1").controls("按键2").enabled = True
        forms("窗口1").controls("按键3").enabled = True
    End If
End If

老师,我想,要表A的审核,是全部审核,生效,如何实现?


--  作者:有点蓝
--  发布时间:2023/3/24 10:21:00
--  
2楼已经说了这种代码放到currentchanged事件,不要乱用

要表A的审核,是全部审核,生效,如何实现?】没看懂什么意思

--  作者:lin98
--  发布时间:2023/3/24 11:18:00
--  

此主题相关图片如下:窗口限制.jpg
按此在新窗口浏览图片

2楼已经说了这种代码放到currentchanged事件.放在那里使用比较不方便,放在PrepareEdit事件是可以用,但条件不满足

需求:打开窗口1后检测到表A的审核列是否全True时,对窗口1上的按键1、按键2、按键3进行限制
如果 表A的(审核)字段=True
窗口1的按键1,为可编辑
窗口1的按键2,为不可编辑
窗口1的按键3,为不可编辑
否则
窗口1的按键1,为不可编辑
窗口1的按键2,为可编辑
窗口1的按键3,为可编辑

--  作者:有点蓝
--  发布时间:2023/3/24 11:39:00
--  
datacolchanged事件

if e.datacol.name = "审核" andalso forms("窗口1").opened then
if e.newvalue = false orelse e.datatable.compute("count(审核)","审核=false") > 0 then
forms("窗口1").controls("按键1").enabled = false
……
else
forms("窗口1").controls("按键1").enabled = true
……
end if
end if

窗口afterload事件
if datatables("表A").compute("count(审核)","审核=false") > 0 then
forms("窗口1").controls("按键1").enabled = false
……
else
forms("窗口1").controls("按键1").enabled = true
……
end if
[此贴子已经被作者于2023/3/24 11:40:22编辑过]

--  作者:lin98
--  发布时间:2023/3/24 12:14:00
--  
老师,测试一下,全审核列=全true执行,效果是可以, 审核列=false,只要有一个记录是审核列=false就生效,不是全审核列=全false,才生效。
如何实现全审核列=全false,才生效?就是表A的全审核列=全true时生效或全审核列=全false时生效

--  作者:有点蓝
--  发布时间:2023/3/24 13:38:00
--  
悖论,这个逻辑是冲突的。不可能实现