跳转到主要内容
HPO Software 分步式 4D 数据库与低代码应用构建指南 —— 从创建首张表到打造可运行的商业应用。

本站部分链接为联盟营销链接:如果您通过这些链接购买,我们可能会获得佣金,且不会增加您的成本。这绝不会影响我们的推荐建议。详情请参阅我们的联盟披露声明。 联盟营销披露.

第四维度学习基础知识

如果您要从 FileMaker Pro 转向 4D (4th Dimension),您首先要做的心理调整之一就是关于 值列表 (value lists)。FileMaker 为您提供了一个友好、独立的对话框来构建它们。而 4D 为您提供了更强大但引导较少的功能:列表编辑器 (List Editor),这是一个设计模式工具,可生成可重用的列表资源,然后将其附加到表单对象。本文将介绍值列表在 4D 中的工作原理、它们与 FileMaker 的方法有何不同,以及您在此过程中将做出的实际决策。

关键要点

  • 在 4D 中,值列表是在 列表编辑器 中集中创建和存储的,而不是像 FileMaker 中那样存储在各个字段定义内。
  • 4D 列表是一个命名资源;同一个列表可以附加到多个表单中的多个表单对象,从而将维护工作集中在一处。
  • 列表项支持单项格式化(纯文本、粗体、斜体)和 可编辑 (editable) 标志,并且每个项目都可以携带 子项目 (child items) 至任意深度 —— 这种分层结构是 FileMaker 的扁平值列表原生不支持的。
  • FileMaker 的四种显示样式(弹出列表、弹出菜单、复选框、单选按钮)可以映射到 4D 概念,但只有 弹出列表 (Popup List) 是简单的;复选框和单选按钮需要多得多的工作量。
  • 构建列表的正确时间是在连接使用它的表单对象 之前,这样您就可以立即按名称引用它。

为什么 4D 称它们为“列表”而 FileMaker 称它们为“值列表”

术语是第一个障碍。FileMaker 的文档和 UI 一致使用 值列表 (Value List)。4D 文档和经典的 HPO Soft 培训材料使用 列表 (List),您还将在较旧的参考资料和社区帖子中看到 选择列表 (Choice List)。它们都描述了相同的概念:一个命名的项目集合,用户在向字段输入数据时从中进行选择。

命名差异反映了真正的架构差异。在 FileMaker 中,值列表本质上是字段或布局对象的属性 —— 您在使用它的上下文中定义它,且 FileMaker 提供三个来源:

  • 您自己输入的项目的 自定义列表。
  • 从字段值派生 的列表 —— 从当前文件中的记录中提取的唯一值,或通过关系获取的值。
  • 基于另一个文件中的列表 的列表(相关文件的值列表)。

4D 在概念上支持相同的三个“源”,但它将 列表定义 与 列表用法 分开。您在列表编辑器中定义一次列表,为其指定一个名称,然后任何表单对象(弹出窗口、下拉列表、组合框、选项卡控件等)都可以指向该名称。这种分离是最需要内化的重要事项,因为它改变了您规划架构和表单的方式。

在 4D 列表编辑器中创建列表

工作流程很短,但值得按正确的顺序进行。

  1. 切换到 设计模式 (Design mode)。列表是设计时资源,而不是运行时数据。
  2. 打开 工具 (Tools) 菜单并选择 列表编辑器 (List Editor)。(在现代 4D 中,根据版本不同,它位于“设计”菜单/资源管理器下,但经典路径是“工具” $\rightarrow$ “列表编辑器”。)
  3. 列表编辑器窗口打开,包含 两个子窗口:左侧的 列表清单 (List of Lists) 和右侧的 当前列表 (Current List)。
  4. 在左侧窗格中,单击 添加 (Add) 并键入新列表的名称。仔细选择名称 —— 它将成为您在表单对象中引用的标识符,稍后重命名意味着需要更新每个引用。
  5. 单击名称将其选中,然后移至右侧窗格并输入该列表的项目,每行一个。

这就是整个创建循环。有趣的部分是项目创建后您可以对其执行的操作。

Related: — A spreadsheet-simple interface sitting on top of a real , with automations, views, and shareable interfaces..

单项格式化和可编辑性

每个列表项都有自己的显示属性:

  • 纯文本 (Plain text)(默认)
  • 粗体 (Bold)
  • 斜体 (Italic)
  • 粗体和斜体 (Bold and italic)

因为这些适用于 每个项目,所以单个列表可以混合样式 —— 这对于在列表中直观地标记默认选项、已弃用的选项或类别标题非常有用。

每个项目还有一个 可编辑 (editable) 标志。当某个项目被标记为可编辑时,用户可以修改该条目,而不是被锁定在预定义的文本中。这是一个微妙但强大的区别:它允许您发布一个 大部分 为受控词汇的列表,但在业务真正需要的地方提供受控的自由文本“逃生口”。请谨慎使用 —— 一旦用户可以编辑列表项,您的数据一致性保证就会减弱,且该字段的报表分析会变得更困难。

If you are shopping: — A that plugs into the wider Zoho suite and prices per user rather than per app..

子项目:分层列表

最让 FileMaker 老手感到惊讶的功能是 添加子项 (Add a Child)。任何列表项都可以有一个子项,而该子项可以有自己的子项,依此类推。您实际上是在构建一棵树。

这很重要,因为许多实际的商业词汇是分层的:

  • 产品类别 $\rightarrow$ 子类别 $\rightarrow$ SKU
  • 地区 $\rightarrow$ 国家 $\rightarrow$ 城市
  • 部门 $\rightarrow$ 团队 $\rightarrow$ 角色
  • 科目表 $\rightarrow$ 科目组 $\rightarrow$ 个人科目

在 FileMaker 中,您通常会使用自关系和门户对其进行建模,或者将其展平为具有命名约定的单个列表。在 4D 中,您可以直接在列表资源中表达层次结构,并让表单对象将其呈现为缩进菜单。对于任何基于结构化参考数据构建选择器的人来说,这是一个真正的优势。

列表如何附加到表单对象

列表创建后,您可以将其附加到表单对象 —— 最常见的是 弹出列表 (popup list)(根据对象类型和版本,也称为下拉列表或弹出菜单)。具体操作:

  • 在设计模式下选择表单上的字段或变量对象。
  • 打开对象的 属性 (Properties) 列表。
  • 找到 选择列表 (Choice List) / 列表 (List) 属性,然后从选择器中选择您的命名列表。

由于列表是按名称引用的,因此同一个列表可以驱动输入表单、搜索表单和报告过滤器上的弹出窗口 —— 所有这些都指向同一个定义。修改一次列表,所有调用者都会更新。这就是增加设计时步骤所带来的回报。

一个实际的警告:如果您删除或重命名表单对象引用的列表,在某些版本中,这些对象会静默地丢失其列表。在重命名之前,请在表单中搜索旧名称。将列表名称视为应用程序公共接口的一部分。

Related: — A builder aimed at portals, directories, and internal tools — with flat-rate pricing instead of per-user fees..

显示样式:哪些映射清晰,哪些不清晰

FileMaker 为值列表提供四种显示样式。以下是它们在实践中如何转化为 4D:

FileMaker 显示样式4D 等效4D 实现难度
弹出列表 (Popup List)弹出/下拉列表对象简单明了 —— 推荐的起点
弹出菜单 (Popup Menu)弹出菜单对象简单明了
复选框 (Check Boxes)绑定到列表的复选框对象明显复杂得多;通常需要多个对象或值列表字段
单选按钮 (Radio Buttons)单选按钮组明显复杂得多;通常由单个单选对象构建

诚实的总结(也是原始 HPO Soft 材料所做的总结):此处仅描述弹出列表,因为它是阻力最小的路径。复选框和单选按钮值列表在 4D 中 是 可以实现的,但它们比 FileMaker 的对应项复杂得多。如果您正在迁移 FileMaker 解决方案且其严重依赖复选框值列表,请为该转换预留充足的时间 —— 这不是一对一的移植。

选择正确的列表源

在打开列表编辑器之前,请确定 项目来自何处。这个决定将影响后续的所有环节。

Our pick: — The long-running relational database platform for teams that need custom apps on desktop, web, and mobile from a single file..

  • 静态自定义列表 —— 您手动键入项目。最适合小规模、稳定的词汇:状态代码、称呼、优先级、是/否/未知。构建速度快,无运行时成本,但每次更改都需要在设计模式下编辑并重新部署。
  • 从字段值派生的列表 —— 项目来自字段中已存在的唯一值。最适合词汇表由数据驱动并有机增长的情况,例如由系统其他部分填充的“客户类型”字段。权衡:该列表的纯净度取决于您的数据,且无法提供任何记录中尚不存在的值。
  • 基于另一个文件/相关列表的列表 —— 项目来自相关表或另一个文件的列表。最适合应用程序多个部分必须达成一致的共享参考数据(如部门、货币或产品线的中央查找表)。对于随时间变化的任何内容,这是最易于维护的选项,因为您更新的是源表而非列表。

一个有用的经验法则:如果多个表单需要该列表,或者如果列表在没有代码发布的情况下会发生变化,请由数据驱动而非手动输入。 静态列表适用于真正固定的内容 —— 而真正固定的内容比人们想象的要少。

实用指南和常见陷阱

一些来之不易的习惯可以让 4D 中的列表工作变得轻松许多:

  • 使用“前缀+用途”为列表命名。 例如 lst_Status_Order 或 lst_Region_Sales 可以告诉未来的维护者该列表的用途和使用位置。避免使用 List1 等通用名称。
  • 在创建表单对象之前构建列表。 如果您先创建弹出窗口,则需要编辑两次该对象的属性。
  • 保持静态列表简短。 包含 50 个条目的静态列表是一项维护负担;那其实是一个“伪装”成静态列表的数据驱动列表。
  • 审慎对待可编辑项目。 每个可编辑项目都是数据验证中的一个漏洞。记录每个可编辑项存在的原因。
  • 将子项目用于真正的层次结构,而非装饰。 不反映真实父子关系的缩进只会让用户感到困惑,而非提供帮助。
  • 留意孤立的引用。 当您停用某个列表时,在删除它之前请在表单中 grep 搜索其名称。

关于 4D 如何适应低代码和快速应用程序开发环境的更广泛背景,该平台自身的文档和社区论坛是权威来源;4D 开发人员文档 涵盖了当前的列表编辑器 UI,该 UI 自经典 HPO Soft 材料编写以来已有所演进。有关支持表、字段和查找的关系模型的背景信息,请参阅维基百科关于 关系模型 的文章;对于此类工具所属的一般类别,维基百科关于 低代码开发平台 的概述是一个有用的参考。

列表在整体构建中的位置

值列表是以下序列中的第六步:创建数据库 $\rightarrow$ 设置数据库属性 $\rightarrow$ 定义表 $\rightarrow$ 定义数据字段 $\rightarrow$ 构建表单 $\rightarrow$ 创建值列表 $\rightarrow$ 输入示例数据。请注意,列表位于表单“之后”且在示例数据“之前”。这种顺序是刻意设计的且值得遵守:您需要表单对象就位以便将列表附加到它们,但您需要在开始输入示例记录之前完成列表,因为在输入示例数据时,您才会发现列表是否真正涵盖了现实世界的各种情况。

如果您跳步先输入示例数据,您会发现每次细化列表时都需要重新输入记录。先做列表,再填充数据。

常见问题

FileMaker 中的值列表与 4D 中的列表有什么区别?

FileMaker 在使用值列表的字段或布局对象的上下文中定义值列表,并提供三个来源:自定义项、来自记录或关系的值,以及来自另一个文件的列表。4D 将定义与用法分开:您在列表编辑器中创建一次命名列表,然后将该名称附加到任意数量的表单对象。4D 的方法前期工作较多,但在许多表单共享相同词汇表时,其可维护性要高得多。

4D 可以像 FileMaker 一样创建复选框和单选按钮值列表吗?

是的,但它比 FileMaker 中的复杂得多。 FileMaker 允许您直接在值列表上选择“复选框”或“单选按钮”作为显示样式。在 4D 中,实现相同的行为通常需要多个表单对象或值列表字段,因此原始 HPO Soft 培训材料故意仅涵盖弹出列表。如果您要迁移依赖于复选框列表的 FileMaker 解决方案,请计划额外的时间。

4D 列表中的子项是什么,何时应该使用它们?

子项是嵌套在父列表项下的子项,嵌套可以继续到任意深度。当您的词汇表真正具有层次结构时(产品类别和子类别、地区和城市、部门和团队),请使用它们。不要将它们单独用于视觉分组,因为缩进意味着用户期望具有某种意义的父子关系。

我应该使用静态列表还是数据驱动列表?

对于很少变化的小而稳定的词汇表使用静态自定义列表,例如状态代码或优先级。当词汇量随着时间的推移而增长或在多个表单之间共享时,请使用从字段值或相关文件派生的列表。一个好的规则:如果列表在没有代码发布的情况下会发生变化,或者如果多个表单需要它,请由数据驱动,而不是手动输入项目。

列表项上的“可编辑”选项有什么作用?

将列表项标记为可编辑可以让用户修改该条目,而不必局限于预定义的文本。当您想要一个主要受控的词汇表和一些受控的自由文本输入出口时,它非常有用。请谨慎使用它,因为可编辑项目会削弱数据一致性保证,并使该字段的报告更难以预测。

在构建过程中我应该何时创建值列表?

在表单存在之后但在输入示例数据之前创建列表。您需要表单对象就位,以便可以按名称将列表附加到它们,并且您希望在样本输入之前完成列表,这样您就不必在每次细化列表时重新输入记录。遵循表、字段、表单、列表,然后是示例数据的顺序,可以能切实减少重复工作。


Try FileMaker Free for 45 Days

The long-running relational database platform for teams that need custom apps on desktop, web, and mobile from a single file.