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


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

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

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


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

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


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


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

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/10 16:12:00 [只看该作者]

窗口打开事件,从单元格取得之前的值,循环所有节点,比较得到指定节点,然后选中

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


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

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

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/10 17:05:00 [只看该作者]

参考:http://www.foxtable.com/webhelp/scr/2961.htm


        For Each nd As WinForm.TreeNode In trv.AllNodes
            If nd.Text.IndexOf(drp.Text) >= 0 Then
                trv.StopRedraw()
                trv.SelectedNode = nd
                nd.EnsureVisible()
                trv.ResumeRedraw()
                Exit For
            End If
        
Next


 回到顶部
帅哥哟,离线,有人找我吗?
落叶孤影
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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()

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/10 20:22:00 [只看该作者]

DropDownOpened事件


Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim v1 As String = e.Form.DropDownBox.Text

For Each nd As WinForm.TreeNode In tr.AllNodes
    If nd.Text.IndexOf(v1) >= 0 Then
        trv.StopRedraw()
        trv.SelectedNode = nd
        nd.EnsureVisible()
        trv.ResumeRedraw()
        Exit For
    End If
Next

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/11/11 9:46:00 [只看该作者]

 本身,就应该是停留。你生成目录树的代码,写到 afterLoad 事件,不要写到 DropDownOpened

 回到顶部
帅哥哟,离线,有人找我吗?
落叶孤影
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | 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楼的代码!

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/11 17:01:00 [只看该作者]

5楼代码后面加上

Dim v1 As String = tables("xx表").current("xxx列")

For Each nd As WinForm.TreeNode In tr.AllNodes
    If nd.Text.IndexOf(v1) >= 0 Then
        trv.StopRedraw()
        trv.SelectedNode = nd
        nd.EnsureVisible()
        trv.ResumeRedraw()
        Exit For
    End If
Next

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/11/11 17:57:00 [只看该作者]

以下是引用落叶孤影在2016/11/11 16:26:00的发言:
老师,我这个窗口是模式窗口!没法用e.Form.DropDownBox控件。还请老师再看看该怎么改?

窗口的AfterLoad 事件是5楼的代码!

 

你可以直接隐藏窗口,而不是关闭窗口,这样效率也高

 

Forms("窗口1").visible = false

 


 回到顶部
总数 18 1 2 下一页