树形菜单_开发技巧分享—FileMaker 树形目录 (3/4) - 缩进显示

层级计算及菜单名称的缩进显示

在树形目录系列的上一篇文章,我们介绍了目录的层级机制,并制作了两个表格来演示这个机制。其实,在这个表格还差一个字段,就是菜单级别数。菜单级别数可以通过每一个菜单的父级索引序列号的位数除以 2 计算而来。

这个菜单级别数可以用来控制菜单的缩进显示,公式为:单位级别空格数量 x ( 菜单级别数 - 1 )。一级菜单需要在菜单名称前添加 nx0 个空格,二级菜单需要在菜单名称前添加 nx1 个空格,三级菜单需要在菜单名称前添加 nx2 个空格,其他以此类推。

折叠/展开按钮显示需求分析

相对于菜单名称的缩进显示来说,折叠/展开按钮的显示/隐藏控制则显得有些复杂。除了按钮要跟随菜单名称缩进,我们还要考虑折叠和展开按钮的显示,以及判断当前菜单是否有下一级。如果没有下一级,我们就要将按钮隐藏。为了理清这些要求和实现方法,我们将树形目录的要求做了分析,并根据分析示意图制作了一份需求&实现表格。请查看下面 2 张图。

1bb3b7012e9643b6225cbbb221498576.png
caf8f2819f5940f31794ed1ce9ca0f74.png

折叠/展开按钮的显示/隐藏

根据上面表格的分析,折叠/展开按钮会在 3 种情况下隐藏:

1. 当本菜单被折叠(展开按钮隐藏)/展开(折叠按钮隐藏)时

2. 当本菜单没有下级菜单时(同时隐藏)

3. 当折叠/展开按钮的位置不是本菜单的级别时(同时隐藏)

根据这三种隐藏情况,我们需要分别设置对应的隐藏条件:

1. 当菜单折叠时,我们可以在当前显示的所有菜单的索引序号值列表中查找本菜单的索引序号。看看以本菜单的索引序号为开始的值列表的值有多少。当数量等于 1,表示当前菜单折叠,需要隐藏展开按钮;当数量大于 1,表示当前菜单展开,需要隐藏折叠按钮。同时,为了大家方便获取当前显示的所有菜单的索引序号的值列表,我们编写了一个自定义函数:GetFoundSetField。大家从本文的案例文件中导入该自定义函数。

30a3925813842f0afce9cafc4cf7417e.png

2. 当菜单没有下级菜单时,我们需要新建一个字段去计算菜单是否有下级。当该字段等于 0 时,表示当前菜单没有下级,需要隐藏展开和折叠按钮。

3. 当按钮的位置不是本菜单的级别时,我们只要判断当前菜单级别数不等于菜单的位置级别数。

最后,在本案例中就生成了如下按钮隐藏条件。

582d96c783fc87e497aa2266d90ce356.png

其中全局变量($$当前索引序号列表)是通过 OnFirstWindowOpen 脚本触发器生成。不了解的,可以看一下这个触发器脚本。

797786ca61151d81e18138eed7caff27.png

以上技巧便可以让树形目录的菜单名称正确缩进、让展开/折叠按钮正确显示或隐藏。另外,根据我的经验,要通过文字理解以上理论性知识可能会有些困难。建议大家下载案例文件,并对照案例进行理解。

31b2be459d9283ddcdd8a8c931147dd1.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值