Foxtable(狐表)用户栏目专家坐堂 → 请问关于行变化事件和一个表达式的写法


  共有2750人关注过本帖树形打印复制链接

主题:请问关于行变化事件和一个表达式的写法

帅哥哟,离线,有人找我吗?
fntfgz
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:424 积分:5115 威望:0 精华:0 注册:2012/11/16 8:21:00
请问关于行变化事件和一个表达式的写法  发帖心情 Post By:2019/1/29 11:31:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:2019-01-29_110040.png
图片点击可在新窗口打开查看

 

如上图,我有一个学校表,包含全部的学校,还有一个我的志愿表,这是我从学校表中选出来的喜欢的,如上图

 

学校上有一个“加入自选”的按钮,代码如下

以下内容为程序代码:

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中加入代码,来监控行的变化,如有填加就执行代码,获取“院校名称”,并给一个全局变量,如下图

 

下图是“我的志愿”表格的一些设置

 


图片点击可在新窗口打开查看此主题相关图片如下:2019-01-29_105907.png
图片点击可在新窗口打开查看

 

 

问题一,我发现在“院校表”中点“加入自选”按钮时,监控全局变量最后一条的院校名称总是空的,请问DataRowAdded是在addnew()后就马上执行吗?要实现这个功能老师有没有一个更好的建议?

 

问题二,如果获取了“我的志愿”中院校名称的信息到一个集合中,在绘制窗口怎么写院校属于这个集合的这个表达式?

假如这个集合叫names,这样写可以吗?

If e.Col.name= "自选" Then
    e.StartDraw
    If Names.Contains(e.Row("院校名称"))= True Then
        e.Graphics.DrawImage(delimg1, e.x + 3,e.y + 3) '绘制第一个图标
    End If
    e.EndDraw
End If


[此贴子已经被作者于2019/1/29 11:43:41编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/29 12:48:00 [只看该作者]

1、一般这样做:直接在drawcell事件,find查找【我的志愿】表的数据,找到,就显示样式。

 

但是find比较耗时,一般,在【全部院校】表加一个列,勾选的表示添加。

 

2、代码没问题。


 回到顶部
帅哥哟,离线,有人找我吗?
fntfgz
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:424 积分:5115 威望:0 精华:0 注册:2012/11/16 8:21:00
  发帖心情 Post By:2019/1/29 15:15:00 [只看该作者]

 
此主题相关图片如下:2019-01-29_145932.png
按此在新窗口浏览图片


老师,如果我现在不用drawcell了,而是加了一个逻辑列,如上图,现在有这么一个问题,就是不管我是从“院校表增加” 还是在“我的志愿”表中删除,院校表中的“自选逻辑”列都应该实时的更新

 

我的思路是还是用全局变量现在管它叫myyx吧,"我的志愿"表只要行有变化,就取“院校名称”的值给myyx,在全局变量GlobalVariableChanged中,监控myyx,然后更新“自选逻辑”列的值

 

现在有下面3个问题

1、逻辑列可否现在默认的形式换成别的样式,最好带些颜色显示,现在默认不好分辨

 

2、DataRowDeleted可以监控行的删除,我试了没有问题,现在就是DataRowAdded这个事件是再addnew()后立刻执行,还没有等给各列赋值,得不到新增院校的名称

 

3,即使解决了2,GlobalVariableChanged中这个判断的表达式我这么写不行啊,老师帮改改

If e.name="myyx" Then
DataTables("选志愿_yx").ReplaceFor("自选逻辑", True, Vars(e.name).Contains([院校名称]))= True )
End If

 

Vars(e.name).Contains([院校名称]))= True ,院校名称 属于全局变量myyx集合中的一个,就更新


[此贴子已经被作者于2019/1/29 15:34:39编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/29 15:38:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
fntfgz
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:424 积分:5115 威望:0 精华:0 注册:2012/11/16 8:21:00
  发帖心情 Post By:2019/1/29 16:23:00 [只看该作者]

请问老师,第3个问题,哪个表达式怎么改一下呢

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110579 积分:562791 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/1/29 19:59:00 [只看该作者]

直接跨表更新即可,没有必要使用什么变量:http://www.foxtable.com/webhelp/scr/1453.htm

 回到顶部