Foxtable(狐表)用户栏目专家坐堂 → 分区版面能否嵌入窗口?


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

主题:分区版面能否嵌入窗口?

美女呀,离线,留言给我吧!
采菊东篱下
  31楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/20 17:04:00 [显示全部帖子]

不行,这段代码放哪都不行,要么没用,要么报错!

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  32楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/20 17:06:00 [显示全部帖子]

放哪都不行
Dim nms As String() = {"团体赛或个人赛","棋赛名称","所属团体或个人分组","姓名"} '指定生成目录树的各列
Dim qts As String() = {"'","'","'","'"} '指定将各列的值括起来的符号,这里都是字符型,所以都是单引号
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView2")
Dim flt As String
For Each nd As WinForm.TreeNode In e.Node.AllNodes
    nd.Checked  = e.Node.Checked
Next
For Each nd As WinForm.TreeNode In trv.AllNodes
    If nd.Checked  Then
        Dim rts() As String = nd.FullPath.Split("\") 
        Dim val As String = ""
        For i As Integer = 0 To rts.length - 1
            If val > "" Then
                val = val & " And "
            End If
            val = val & nms(i) & " = " & qts(i) & rts(i) & qts(i)
        Next
        If flt > "" Then
            flt = flt & " Or (" & val & ")"
        Else
            flt = val
        End If
    End If
Next
With DataTables("基本信息")
    .LoadFilter = flt '设置加载条件
    .LoadPage = 0 '加载第一页
    .LoadTop = 20 '每页5行
    .LoadOrder = "棋赛名称 desc,团体赛或个人赛,所属团体或个人分组,姓名"
    .LoadReverse = True
    .Load()
    e.Form.Controls("TextBox3").Value = 1 & "/" & .TotalPages
End With

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  33楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/20 17:55:00 [显示全部帖子]

  选中子字节节点,去除父点节点的勾代码我想过加上,后见去除父节点选勾,重新勾选子节点,父节点不会出现选勾,就没必要要
 Do While n IsNot Nothing '取消父节点的选中标记,因为选中子节点,就不要选中父节点了
        n.Checked = False
        n = n.ParentNode
    Loop
代码了,现在看如果不去除父节点选勾,直接去除子节点的一个选勾,父节点选勾依然存在,加这代码有必要了。
   前面的代码专为加载数据文字节点写一段代码费劲了,还好通用,谢谢指教。
[此贴子已经被作者于2020/7/20 17:57:21编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  34楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/20 18:22:00 [显示全部帖子]

我的代码效果是这样的

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20200720181643.png
图片点击可在新窗口打开查看
你的代码效果

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20200720181823.png
图片点击可在新窗口打开查看
多层子节,再下一层没有勾选。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  35楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/21 17:05:00 [显示全部帖子]

递归的内容我认真看了,行不通,你的代码改一下就行了:
Dim trv As WinForm.TreeView = e.Sender
Dim flt As String
If trv.Nodes(0).Name = e.Node.Name
    If e.Node.Checked
        For Each nd As WinForm.TreeNode In trv.AllNodes
            nd.Checked  = False
        Next
        e.Node.Checked = True
    Else
        flt = "1=2"
    End If
Else
    trv.Nodes(0).Checked = False
    
    Dim nms As String() = {"团体赛或个人赛","棋赛名称","所属团体或个人分组","姓名"} '指定生成目录树的各列
    Dim qts As String() = {"'","'","'","'"} '指定将各列的值括起来的符号,这里都是字符型,所以都是单引号
    Dim n As WinForm.TreeNode = e.Node.ParentNode
    For Each nd As WinForm.TreeNode In e.Node.AllNodes
        nd.Checked  = e.Node.Checked
    Next
    Do While n IsNot Nothing '取消父节点的选中标记,因为选中子节点,就不要选中父节点了
        n.Checked = False
        n = n.ParentNode
    Loop
    For Each nd As WinForm.TreeNode In trv.AllNodes
        If nd.Checked  Then
            Dim rts() As String = nd.FullPath.Split("\")
            Dim val As String = ""
            For i As Integer = 0 To rts.length - 1
                If val > "" Then
                    val = val & " And "
                End If
                val = val & nms(i) & " = " & qts(i) & rts(i) & qts(i)
            Next
            If flt > "" Then
                flt = flt & " Or (" & val & ")"
            Else
                flt = val
            End If
        End If
    Next
End If
With DataTables("基本信息")
    .LoadFilter = flt '设置加载条件
    .LoadPage = 0 '加载第一页
    .LoadTop = 20 '每页5行
    .LoadOrder = "棋赛名称 desc,团体赛或个人赛,所属团体或个人分组,姓名"
    .LoadReverse = True
    .Load()
    e.Form.Controls("TextBox3").Value = 1 & "/" & .TotalPages
End With

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  36楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/21 17:17:00 [显示全部帖子]

还有一个问题,我想把导航中某一指定页面设为打开窗口就在导航栏显示它如何设置?我看帮助试过没反应,任务栏里有相关设置,可我的是导航栏。
写这代码报错

Dim Bar As WinForm.NavBar
Bar = e.Form.Controls(
"NavBar1")
Bar.SelectedPage = Bar.NavPages(
"比赛积分")

这样写不起作用:

Dim Bar As WinForm.NavBar

Dim Page1 As WinForm.NavPage

Dim Page2 As WinForm.NavPage

Bar = Forms("主窗口").Controls("NavBar1")

Page1 = Bar.NavPages("比赛积分")

Page2 = Bar.NavPages(0)


[此贴子已经被作者于2020/7/21 17:41:15编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  37楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/21 17:54:00 [显示全部帖子]

行了,谢谢。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  38楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/24 13:47:00 [显示全部帖子]

上面的复选框勾选如果去除子节点选勾后再重选,所有子节点都勾选了,对应的父节点选勾始终没勾选,我想现实还原为没去除勾选前状态,写了一下代码,但报错,请教如何修改:
Dim trv As WinForm.TreeView = e.Sender
Dim flt As String
If trv.Nodes(0).Name = e.Node.Name
    If e.Node.Checked
        For Each nd As WinForm.TreeNode In trv.AllNodes
            nd.Checked  = False
        Next
        e.Node.Checked = True
    Else
        flt = "1=2"
    End If
Else
    trv.Nodes(0).Checked = False
    Dim nms As String() = {"团体赛或个人赛","棋赛名称","所属团体或个人分组","姓名"} '指定生成目录树的各列
    Dim qts As String() = {"'","'","'","'"} '指定将各列的值括起来的符号,这里都是字符型,所以都是单引号
    Dim n As WinForm.TreeNode = e.Node.ParentNode
    For Each nd As WinForm.TreeNode In e.Node.AllNodes
        nd.Checked = e.Node.Checked
    Next
    Dim a As Integer
    For Each nd As WinForm.TreeNode In e.Node.AllNodes
        If nd.Checked = True Then '如果勾选 = True Then
            a = a + 1
            If e.Node.AllNodes.count = a Then
                Do While n Is Nothing
                    n.Checked = True
                    n = n.ParentNode
                Loop
            End If
        End If
    Next
    If e.node.Checked = False Then '去除当前字节选勾
        Do While n IsNot Nothing
            n.Checked = False '去掉父节点选中状态
            n = n.ParentNode
        Loop
    End If
    For Each nd As WinForm.TreeNode In trv.AllNodes
        If nd.Checked  Then
            Dim rts() As String = nd.FullPath.Split("\")
            Dim val As String = ""
            For i As Integer = 0 To rts.length - 1
                If val > "" Then
                    val = val & " And "
                End If
                val = val & nms(i) & " = " & qts(i) & rts(i) & qts(i)
            Next
            If flt > "" Then
                flt = flt & " Or (" & val & ")"
            Else
                flt = val
            End If
        End If
    Next
End If
With DataTables("基本信息")
    .LoadFilter = flt '设置加载条件
    .LoadPage = 0 '加载第一页
    .LoadTop = 20 '每页5行
    .LoadOrder = "棋赛名称 desc,团体赛或个人赛,所属团体或个人分组,姓名"
    .LoadReverse = True
    .Load()
    e.Form.Controls("TextBox3").Value = 1 & "/" & .TotalPages
End With

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  39楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/24 16:26:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20200724162417.png
图片点击可在新窗口打开查看
只有一层的父节勾选了,再上一层就没勾了,不通用。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  40楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/24 21:03:00 [显示全部帖子]

  你三番几次要我看递归法,我刚又看了,甚至翻查8年前在淘宝买access软件时店家附送的foxtable教程,当时我完全没接触foxtable,下载后没认真研究,今天打开细细学习,再次确认,这个递归法只适用于将来我要应用到的会计科目、财务报表,不适用于此例。
如:最贴近本例的帮助连接
1、本例没有编码性质的键,
2、不要按钮形式生成目录树,此例方法已生成全整目录树,因此在内部函数中定义了
Functions.Execute("AddChildren",nd,dt)
在窗口目录树上又用不上,设来没用了,不喜欢以按钮形式生成目录树。
3、最后将目录树的NodeMouseDoubleClick事件代码设置为:

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim 
key As String = e.Node.Name
Dim 
ids As String
If 
key = "全部" Then
    Tables(
"A").Filter = ""
Else
    For Each 
nd As WinForm.TreeNode In trv.AllNodes
        Dim 
pd As WinForm.TreeNode = nd
        Do
            If 
pd.Name = key Then
                If 
ids > "" Then
                    
idsids &  ","
                End If
                
ids = ids & "'" & nd.name & "'"
                Exit Do
            Else
                
pd = pd.ParentNode
                If 
pd Is Nothing Then
                    Exit Do
                End If
            End If
        Loop
    Next
    
Tables("表A").Filter = "键 In (" & ids & ")"
End If

  是击点目录树节点生成的筛选代码,不是解决复选框勾选问题,最贴近的实例是:

http://www.foxtable.com/webhelp/topics/2502.htm

同样没有解决勾选全部子节点后父子点及上一层父节点的勾选问题,在你给的代码基础上再追加上一层父节点,代码要有通用性啊,算了我再想想。

[此贴子已经被作者于2020/7/25 10:17:45编辑过]

 回到顶部
总数 42 上一页 1 2 3 4 5 下一页