以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 请问关于行变化事件和一个表达式的写法 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=130692) |
-- 作者:fntfgz -- 发布时间:2019/1/29 11:31:00 -- 请问关于行变化事件和一个表达式的写法
如上图,我有一个学校表,包含全部的学校,还有一个我的志愿表,这是我从学校表中选出来的喜欢的,如上图
学校上有一个“加入自选”的按钮,代码如下 以下内容为程序代码:
1 Dim r As Row = Tables("选志愿_yx").Current 2 Dim nr As Row = Tables("我的志愿").AddNew() 3 For Each dc As Col In Tables("选志愿_yx").Cols 4 If dc.name<>"自选" Then 5 nr(dc.name) = r(dc.name) 6 End If 7 Next 8 DataTables("我的志愿").save()
我要实现的目标是,在“院校表”将某个院校填加自选时,此院校前面有一个“自选”列,绘制出一个图标,以示提示此院校已经加入自选列了
我的思路是这样的:在“我的志愿”表的DataRowAdded中加入代码,来监控行的变化,如有填加就执行代码,获取“院校名称”,并给一个全局变量,如下图
下图是“我的志愿”表格的一些设置
问题一,我发现在“院校表”中点“加入自选”按钮时,监控全局变量最后一条的院校名称总是空的,请问DataRowAdded是在addnew()后就马上执行吗?要实现这个功能老师有没有一个更好的建议?
问题二,如果获取了“我的志愿”中院校名称的信息到一个集合中,在绘制窗口怎么写院校属于这个集合的这个表达式? 假如这个集合叫names,这样写可以吗? If e.Col.name= "自选" Then [此贴子已经被作者于2019/1/29 11:43:41编辑过]
|
-- 作者:有点甜 -- 发布时间:2019/1/29 12:48:00 -- 1、一般这样做:直接在drawcell事件,find查找【我的志愿】表的数据,找到,就显示样式。
但是find比较耗时,一般,在【全部院校】表加一个列,勾选的表示添加。
2、代码没问题。 |
-- 作者:fntfgz -- 发布时间:2019/1/29 15:15:00 --
我的思路是还是用全局变量现在管它叫myyx吧,"我的志愿"表只要行有变化,就取“院校名称”的值给myyx,在全局变量GlobalVariableChanged中,监控myyx,然后更新“自选逻辑”列的值
现在有下面3个问题 1、逻辑列可否现在默认的形式换成别的样式,最好带些颜色显示,现在默认不好分辨
2、DataRowDeleted可以监控行的删除,我试了没有问题,现在就是DataRowAdded这个事件是再addnew()后立刻执行,还没有等给各列赋值,得不到新增院校的名称
3,即使解决了2,GlobalVariableChanged中这个判断的表达式我这么写不行啊,老师帮改改 If e.name="myyx" Then
Vars(e.name).Contains([院校名称]))= True ,院校名称 属于全局变量myyx集合中的一个,就更新 [此贴子已经被作者于2019/1/29 15:34:39编辑过]
|
-- 作者:有点甜 -- 发布时间:2019/1/29 15:38:00 -- 参考
http://www.foxtable.com/webhelp/scr/2292.htm
http://www.foxtable.com/webhelp/scr/2490.htm
|
-- 作者:fntfgz -- 发布时间:2019/1/29 16:23:00 -- 请问老师,第3个问题,哪个表达式怎么改一下呢 |
-- 作者:有点蓝 -- 发布时间:2019/1/29 19:59:00 -- 直接跨表更新即可,没有必要使用什么变量:http://www.foxtable.com/webhelp/scr/1453.htm |