Foxtable(狐表)用户栏目专家坐堂 → [求助]目录树为什么在函数中不能使用?


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

主题:[求助]目录树为什么在函数中不能使用?

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


加好友 发短信
等级:婴狐 帖子:78 积分:888 威望:0 精华:0 注册:2012/12/1 22:12:00
[求助]目录树为什么在函数中不能使用?  发帖心情 Post By:2014/11/21 20:53:00 [只看该作者]

员工档案表结构如下:部门、姓名、岗位、出生日期等。

在员工档案窗口中添加一个按钮,生成目录树,代码如下:

Dim tv As WinForm.TreeView
tv =e.Form.Controls("TreeView1")
tv.BuildTree("员工档案", "部门|岗位|姓名")

 

上述代码运行没有问题。考虑到代码的通用性,将上述代码改为函数TreeViewRefresh,代码如下:

Dim arg_Columns As String = Args(0) '目录树的数据列,用符号"|"隔开
Dim tv As WinForm.TreeView
tv =Forms.ActiveForm.Controls("TreeView1")
tv.BuildTree(CurrentTable.Name ,arg_Columns)

调用函数代码:Functions.Execute("TreeViewRefresh","部门|岗位|姓名")

运行时就出错,提示:未将对象引用设置到对象的实例!

 

请各位高手看一下如何解决?

 


此主题相关图片如下:2014-11-21_205033.png
按此在新窗口浏览图片
[此贴子已经被作者于2014-11-22 9:01:54编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/11/22 9:39:00 [只看该作者]

你没有打开窗口吧

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


加好友 发短信
等级:婴狐 帖子:78 积分:888 威望:0 精华:0 注册:2012/12/1 22:12:00
  发帖心情 Post By:2014/11/22 14:38:00 [只看该作者]

谢谢Bin的关注!

建立TreeViewRefresh函数后,将窗口按钮内原来的代码改为调用函数:

Functions.Execute("TreeViewRefresh","部门|岗位|姓名")

 

运行时就出错了。


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/11/22 14:40:00 [只看该作者]

上个例子看看

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


加好友 发短信
等级:婴狐 帖子:78 积分:888 威望:0 精华:0 注册:2012/12/1 22:12:00
  发帖心情 Post By:2014/11/22 15:26:00 [只看该作者]

问题解决了!谢谢Bin!

做例子的过程中发现,在窗口AfterLoad事件中也调用了生成树的函数Functions.Execute("TreeViewRefresh","部门|岗位|姓名")

导致出错!去掉就没问题了。

不过,这样窗口生成后不能直接显示目录树,需要单击按钮,有些遗憾!

理论上AfterLoad事件是加载窗口后执行,在这里生成目录树应该没问题。

 

 


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


加好友 发短信
等级:四尾狐 帖子:953 积分:7252 威望:0 精华:0 注册:2011/9/6 13:36:00
  发帖心情 Post By:2014/11/24 20:26:00 [只看该作者]

窗口中的表加载完毕后,可以加载目录树

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


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

代码这样写

 

Dim arg_Columns As String = Args(0) '目录树的数据列,用符号"|"隔开

Dim frm As Form = args(1)
Dim tv As WinForm.TreeView
tv = frm.Controls("TreeView1")
tv.BuildTree(CurrentTable.Name ,arg_Columns)

 

 

调用函数代码:Functions.Execute("TreeViewRefresh", "部门|岗位|姓名", e.Form)

[此贴子已经被作者于2014-11-24 20:30:17编辑过]

 回到顶部