Foxtable(狐表)用户栏目专家坐堂 → 打开目录树窗口节点停留位置问题


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

主题:打开目录树窗口节点停留位置问题

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


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
打开目录树窗口节点停留位置问题  发帖心情 Post By:2016/11/10 16:03:00 [显示全部帖子]

单击某按钮,打开一个带目录树的窗口,选择该目录树的某个节点后关闭窗口。再次打开该窗口的时候,目录树窗口的节点又恢复了原样,如何打开窗口的时候让目录树节点停留在上次打开选中的那个节点上呢?
下面是有问题的目录树窗口:


图片点击可在新窗口打开查看此主题相关图片如下:有问题的目录树选择.gif
图片点击可在新窗口打开查看
如何能像下面这种目录树呢?


图片点击可在新窗口打开查看此主题相关图片如下:没问题的目录树.gif
图片点击可在新窗口打开查看

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


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
  发帖心情 Post By:2016/11/10 16:37:00 [显示全部帖子]

老师能否写段示例的代码?

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


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
  发帖心情 Post By:2016/11/10 19:29:00 [显示全部帖子]

请问代码是写到窗口的AfterLoad事件中吗?老师,不好意思,我自己还是不会写代码!
这是窗口的AfterLoad事件代码:请老师帮忙给看看该怎么写?谢谢!
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim rts() As String = {"全部","收入","成本","费用","税金","资产购置","其他"}
Dim nd As WinForm.TreeNode
Dim dt As DataTable = DataTables("科目明细表")
tr.StopRedraw()
tr.Nodes.Clear
For Each rt As String In rts
    tr.Nodes.Add(rt)
Next
For Each dr As DataRow In dt.Select("","科目代码")
    If dr.IsNull("科目代码") = False AndAlso dr("科目代码").Length = 4 Then
        Dim i As Integer = CInt(dr("科目代码").Substring(0,1))
        nd = tr.Nodes(i).Nodes.Add(dr("科目代码"),dr("科目代码") & " " & dr("科目名称"))
        Functions.Execute("AddChildren",nd,dt)
    End If
Next
tr.ResumeRedraw()

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


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
  发帖心情 Post By:2016/11/11 16:26:00 [显示全部帖子]

老师,我这个窗口是模式窗口!没法用e.Form.DropDownBox控件。还请老师再看看该怎么改?
打开窗口是在表的:
CellButtonClick 事件打开的,代码如下:
If e.Col.Name = "支出明细" Then
    e.Cancel = True
    Forms("支出项目明细窗口").Open()
End If
窗口的AfterLoad 事件是5楼的代码!

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


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
  发帖心情 Post By:2016/11/11 19:19:00 [显示全部帖子]

按“有点蓝”老师的提示,我在打开窗口的AfterLoad 事件写了下面的代码,但还是不行。下面的代码在打开窗口的时候,总是停留在一个地方,不会随着选择目录节点进行变化。还请老师再指点!谢谢!
Dim v1 As String = Tables("支出项目明细窗口_table1").Current("科目名称")
For Each ndd As WinForm.TreeNode In tr.AllNodes
    If ndd.Text.IndexOf(v1) >= 0 Then
        tr.StopRedraw()
        tr.SelectedNode = ndd
        ndd.EnsureVisible()
        tr.ResumeRedraw()
        Exit For
    End If
Next
这是错误的图像:

图片点击可在新窗口打开查看此主题相关图片如下:有问题的目录树选择.gif
图片点击可在新窗口打开查看

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


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
  发帖心情 Post By:2016/11/12 11:13:00 [显示全部帖子]

老师,我把示例给改成了和我项目差不多的例子,如下:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:下拉目录树.table

我想要实现的结果是:如下图一样:

图片点击可在新窗口打开查看此主题相关图片如下:目录树演示操作.gif
图片点击可在新窗口打开查看
1、我在第一行选择的是窗口中目录树节点“资产类”,表中的科目是“库存现金”。在第二行选择的时候,打开窗口时目录树的节点还应该停留在“资产类”节点,表中科目“库存现金”上
2、
我又选择了“负债类”节点,但没有选择表中的科目,关闭了窗口。我再打开窗口的时候,窗口的目录树节点是停留在我选择的“负债类”节点上!
3、还请老师在看看,如何修改代码,谢谢!

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


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
  发帖心情 Post By:2016/11/12 11:51:00 [显示全部帖子]

以下是引用有点蓝在2016/11/12 11:34:00的发言:
你的意思是打开目录树后,默认选中之前其它行选择过的数据?

那就用全局变量存储一下最后选择的内容

不完全对,我的意思是:打开窗口后,目录树节点默认选中或者叫停留在鼠标之前点击过的最后一个节点鼠标之前选中的最后一行上!


 回到顶部
帅哥哟,离线,有人找我吗?
落叶孤影
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1618 威望:0 精华:0 注册:2016/5/5 14:56:00
  发帖心情 Post By:2016/11/12 12:22:00 [显示全部帖子]

谢谢老师!但还是有点不完美,上述代码只实现了我说的第一种既停留在了目录树的节点上。但如果我选择了窗口中的某一行,希望窗口打开时,目录树的节点是停留在窗口表中之前选择的某一行中。还请老师再看看!

 回到顶部