以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]目录树为什么在函数中不能使用?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=60292)

--  作者:qujl
--  发布时间: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
--  发布时间:2014/11/22 9:39:00
--  
你没有打开窗口吧
--  作者:qujl
--  发布时间:2014/11/22 14:38:00
--  

谢谢Bin的关注!

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

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

 

运行时就出错了。


--  作者:Bin
--  发布时间:2014/11/22 14:40:00
--  
上个例子看看
--  作者:qujl
--  发布时间:2014/11/22 15:26:00
--  

问题解决了!谢谢Bin!

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

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

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

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

 

 


--  作者:yinyb36
--  发布时间:2014/11/24 20:26:00
--  
窗口中的表加载完毕后,可以加载目录树
--  作者:有点甜
--  发布时间: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编辑过]