FileMaker

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

2020-03-10  本文已影响0人  飞沫课

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

以上就是本文所有内容,欢迎需要案例链接的朋友给我们留言。

上一篇 下一篇

猜你喜欢

热点阅读