以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于表事件变量的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=176431)

--  作者:jiterp
--  发布时间:2022/4/13 8:11:00
--  关于表事件变量的问题
我在PrepareEdit表事件中,定义了以下代码:

If Functions.Execute("Sxsj","abc",e.Col.Name)>0 Then
    e.Col.AllowEdit = False
End If

说明:abc是表名,上面代码执行,该列无法编辑;然后将表名abc改成下面的取值方式,结果该列并没控制,这是什么原因?

If Functions.Execute("Sxsj",e.Table.Name,e.Col.Name)>0 Then
    e.Col.AllowEdit = False
End If

--  作者:有点蓝
--  发布时间:2022/4/13 8:41:00
--  
打开命令窗口,然后测试下面代码,看看表名是什么?

output.show(e.Table.Name)
If Functions.Execute("Sxsj",e.Table.Name,e.Col.Name)>0 Then
    e.Col.AllowEdit = False
End If

--  作者:jiterp
--  发布时间:2022/4/13 8:57:00
--  
在命令窗口运行不了第一句,提示table不是e成员。

在表事件是用消息弹窗,弹出确实是这个表名abc,但是这段代码就是无效。
[此贴子已经被作者于2022/4/13 9:00:02编辑过]

--  作者:有点蓝
--  发布时间:2022/4/13 9:00:00
--  
代码仍然是放到PrepareEdit,

命令窗口不需要添加任何代码,只是打开即可,然后到表格里测试,看命令窗口输出什么结果

--  作者:jiterp
--  发布时间:2022/4/13 9:29:00
--  
试了,表名确实是相同的,但就是不执行


--  作者:有点蓝
--  发布时间:2022/4/13 9:56:00
--  
请上传实例测试
--  作者:jiterp
--  发布时间:2022/4/13 10:33:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb


窗口中的税率设置了不可编辑,但是还是可以编辑。

刚才的问题,应该是关联表的原因,它取的名字是关联表的名称,我改了取值,是对的;
现在是另外一个问题:实例中的税率,如果不在表控件上,而是放在文本控件上,还是不受控制,还是可以编辑的。
[此贴子已经被作者于2022/4/13 10:35:53编辑过]

--  作者:有点蓝
--  发布时间:2022/4/13 10:39:00
--  
指在窗口控件中录入控制?这种不能在表事件处理,要另外控制:http://www.foxtable.com/webhelp/topics/2342.htm

另外PrepareEdit的用法也不正确,不应该设置AllowEdit ,应该使用e.cancel=true来限制不能在表格录入