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

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

最佳 4D 形式:最佳选择比较(2026 年)

4D 表单是 4D 应用程序的用户界面层,该平台提供三种不同的表单类型:详细表单 (detail)、列表表单 (list) 和输出表单 (output),每种类型适合不同的任务。在 2026 年,正确实现这一目标意味着将表单类型与任务相匹配,然后叠加值列表、子表单和动态属性。本比较涵盖了实际选项、权衡以及如何做出决定。

关键要点

  • 4D 提供三种类型的 4D 表单:详细表单(一次一条记录)、列表表单(网格中的多条记录)和 输出表单(打印/报告布局)。选择错误的类型是初学者最常犯的错误。
  • 项目表单(存储为 .4DForm JSON 文件)是现代默认设置;表表单是遗留形式且链接到单个表。新工作应使用项目表单。
  • 动态表单 (DIALOG, FORM LOAD, FORM GOTO PAGE) 允许您在运行时创建和切换界面 —— 这对于向导式流程和基于角色的用户界面至关重要。
  • 值列表(静态、分层或来自字段/数组)驱动下拉列表、组合框和弹出菜单;将其绑定到字段仅需更改单行属性。
  • 子表单将一个表单嵌入到另一个表单中,是创建主从布局而无需重复创建控件的标准方法。
  • 列表表单的性能高度依赖于实体选择与经典选择以及是否为大型记录集启用了延迟加载。

“4D 表单”的实际含义

4D 表单是存储在结构(表表单)或独立项目文件(项目表单)中的声明性用户界面定义。表单包含对象(输入字段、按钮、列表框、子表单、Web 区域和静态文本),这些对象排列在具有定义页面大小且(可选)包含多个页面的画布上。每个对象都带有 4D 在运行时评估的属性(数据源、可输入状态、字体、坐标)。

对于比较来说最重要的区别是:表单不是窗口。表单是一个布局;窗口是 4D 打开以显示该布局的容器。同一个表单可以出现在模态对话框、调色板窗口、可调整大小的文档窗口中,或作为子表单嵌入。理解这种分离可以让经验丰富的开发人员在多个上下文中重用同一个表单,而不是重新构建它。

三种表单类型比较

表单类型显示记录典型用途关键注意事项
详细表单一条数据输入、记录编辑、对话框需要明确的导航(按钮, NEXT RECORD)
列表表单多条浏览、选择、仪表板大量选择需要延迟加载或分页
输出表单多条打印、PDF 导出、报告非交互式;布局以打印为导向

详细表单是数据输入的主力。它们显示表的当前记录并允许用户直接编辑字段。详细表单也是设置对话框或登录屏幕的自然选择,因为您可以将其根本不绑定到任何表,而仅由进程变量驱动。

列表表单呈现可滚动的记录网格。在现代 4D 中,列表表单通常围绕 列表框 对象构建,而不是旧的“带列的列表表单”方法。列表框可以是基于数组的或基于选择的,而基于选择的列表框直接绑定到实体选择 —— 这是使用 ORDA 时的首选模型。

输出表单用于打印。它们在带有页眉、页脚和分页级别的页面布局中渲染记录。输出表单不旨在进行屏幕交互,4D 不允许用户像在详细表单上那样使用 Tab 键进入字段。

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

这就是三种主要的 4D 表单。

项目表单 vs. 表表单

项目表单作为单独的 .4DForm 文件存储在项目的 “Forms” 文件夹中,并支持版本控制:每个表单都是一个单独的 JSON 文档,因此两个开发人员编辑不同表单时在合并期间很少发生冲突。表表单位于结构文件中,并通过相同的表单编辑器进行编辑,但在概念上链接到单个表。

2026 年的实用技巧:所有新表单都应作为项目表单启动。 表表单仍然受到完全支持,您会在遗留数据库中遇到它们,但项目表单能提供更清晰的差异、在表之间更容易重用以及更清晰的心智模型。将表表单转换为项目表单涉及将其从表的表单列表中移出并移入项目的表单列表;对象定义将被保留。

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

构建表单:核心步骤

  1. 在表单编辑器中创建表单(Explorer → Forms → New),选择详细、列表或输出类型。
  2. 设置页面大小,并在必要时为多步骤布局添加页面。
  3. 放置对象:将字段从 Explorer 拖动到画布,或从对象库添加按钮、列表框和子表单。
  4. 链接数据源:将每个输入对象分配给字段、变量或表达式。
  5. 为任何下拉列表、组合框或弹出菜单配置值列表。
  6. 连线事件 —— 将方法附加到表单事件 (On Load, On Clicked, On Data Change) 和对象事件。
  7. 在表单编辑器中使用内置预览进行测试,然后在运行窗口中测试。

第 6 步是创建 4D 表单时大部分实际工作发生的地方。没有事件方法的表单只是静态图像;On Load 表单事件通常用于填充数组、加载值列表或根据当前用户角色设置可输入状态。

值列表:让人绊倒的细节

值列表是 4D 表单中每个下拉菜单、组合框和弹出菜单背后的机制。共有三种类型:

  • 静态列表 —— 您在列表编辑器中输入一次值。非常适合状态代码等固定枚举。
  • 分层列表 —— 支持使用 | 分隔符约定的嵌套元素,对于类别树很有用。
  • 动态列表 —— 在运行时从字段、数组或公式填充。这些反映了实时数据,因此活跃客户列表无需重新部署即可保持最新。

一个常见的陷阱:将动态值列表绑定到存储引用(ID)的字段,同时显示标签。4D 使用“关联值”的概念来管理这一点:列表存储一个值并显示另一个值。正确处理它的区别在于,下拉列表记录的是 “42” 还是 “Acme Corp.”。

子表单和主从布局

子表单将一个表单集成到另一个表单中。父表单承载一个子表单对象;子表单在其中显示。数据通过子表单的 “table” 属性流动,并且在现代 4D 中,通过传递给子表单的 Form 对象流动。

主从布局是 4D 表单的经典用法:顶部是发票的详细表单,下方子表单中是发票行的列表表单。当父记录更改时,子表单的选择会更新 —— 前提是您在父表单的 On Data Change 中更新它或通过重新绑定选择来更新。子表单还允许您创建可重用组件:一个 “客户选择器” 表单可以放入任何需要它的父表单中。

动态表单和运行时 UI

动态 4D 表单在应用程序运行时修改界面。关键命令包括 DIALOG(将表单作为模态或非模态对话框打开)、FORM LOAD(将表单加载到内存中而不显示)、FORM GOTO PAGE(切换页面)以及 OBJECT SET...(动态更改对象属性)。

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

动态表单在两种场景中非常重要。首先是 向导流程:一个具有多个页面的单个表单,随着用户完成步骤通过 FORM GOTO PAGE 前进。其次是 基于角色的界面 —— 根据用户权限在 On Load 时隐藏或禁用对象,使一个表单能同时服务于管理员和只读查看者。权衡在于复杂性:动态行为比静态布局更难调试,因此请将其保留在如果不这样做就需要第二个表单的情况下。

性能考虑因素

4D 列表表单的性能主要取决于 4D 必须具体化的记录数量。链接到实体选择的基于选择的列表框仅加载其显示的行,这使得内存占用在表增长时保持平稳。经典的基于数组的列表框会提前加载所有内容,在大型表中会明显减慢速度。

另外两个手段:列表框上的 延迟加载(滚动时检索行)和 服务器端查询(返回有界选择而非整个表)。对于客户端-服务器部署,通过网络获取记录的往返成本通常远超渲染时间,因此缩小选择范围是最有价值的优化。

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

如何决定

  • 单条记录的数据输入? 详细表单。
  • 从多条记录中浏览或选择? 带有基于选择的列表框的列表表单。
  • 打印或 PDF 输出? 输出表单。
  • 在多个表上可重用? 项目表单,而非表表单。
  • 多步骤流程? 具有多个页面且动态前进的表单。
  • 主从关系? 承载列表表单子表单的详细表单。
  • 固定选择集? 静态值列表。 实时数据? 动态值列表。

这些选项可帮助您选择适合您需求的 4D 表单。

学习资源

官方 4D 文档是 4D 表单、对象、事件和命令的权威参考。从那里开始查找确切的属性名称和命令签名。有关底层数据库概念的背景,Wikipedia 上关于 4D (software) 的文章提供了该平台的有用历史。JSON 格式页面值得一读,如果您计划手动编辑 .4DForm 文件或在版本控制中比较它们。有关指导您如何构建表单背后表的通用关系设计原则,请查看 database normalization 概述。

常见问题

什么是 4D 表单?

4D 表单是一种声明性用户界面呈现,由链接到数据源的对象(输入字段、按钮、列表框、子表单)组成。4D 在运行时评估表单的属性,并将其显示在窗口、对话框中或作为嵌入的子表单。表单分为三种类型:详细、列表和输出。

4D 中的详细表单和列表表单有什么区别?

详细表单一次显示一条记录,用于数据输入和编辑。列表表单显示多条记录(通常在列表框中),用于浏览和选择。两者经常结合使用:使用列表表单选择记录,然后使用详细表单编辑该记录。

我应该使用项目表单还是表表单?

项目表单是现代默认标准,并存储为单独的 .4DForm 文件,使其更易于重用并在版本控制中管理。表表单是遗留形式且链接到单个表。新开发应使用项目表单;现有数据库仍支持表表单。

值列表在 4D 表单中如何工作?

值列表填充下拉列表、组合框和弹出菜单。它们可以是静态的(仅输入一次)、分层的(嵌套项目)或动态的(在运行时从字段、数组或公式创建)。值列表可以存储一个值同时显示另一个值,这就是您在保存客户 ID 的同时显示客户姓名的方式。

我可以在运行时更改 4D 表单吗?

可以。动态表单使用 DIALOG、FORM LOAD 和 FORM GOTO PAGE 等命令在应用程序运行时加载表单、切换页面和更改对象属性。这支持向导式流程和一个表单服务于不同用户的基于角色的界面。

为什么我的 4D 列表表单在处理大表时很慢?

列表表单的缓慢通常源于具体化了太多记录。链接到实体选择的基于选择的列表框仅加载显示的行,而基于数组的列表框加载所有内容。启用延迟加载和将查询范围缩小到有界选择是影响最大的两个修复方案。

Frequently asked questions

什么是 4D 表格?

4D 表单是一种声明性用户界面演示,由链接到数据源的对象(输入字段、按钮、列表框、子表单)组成。 4D 在运行时评估表单的属性,并将其显示在窗口、对话框中或作为嵌入的子表单。表单分为三种类型:详细信息、列表和输出。

4D 中的详细表单和列表表单有什么区别?

详细表单一次显示一条记录,用于数据输入和编辑。列表形式通常在列表框中显示许多记录,用于浏览和选择。两者通常结合在一起:使用列表表单来选择记录,然后使用详细信息表单来编辑记录。

我应该使用项目形式还是表格形式?

默认情况下,项目表单是现代标准,并存储为单独的“.4DForm”文件,使它们更易于在版本控制中重用和管理。表格形式是遗留的并且链接到单个表格。新开发项目应采用项目形式;现有数据库仍然支持表格形式。

4D 形式的值列表如何工作?

值列表填充下拉列表、组合框和弹出菜单。它们可以是静态的(仅输入一次)、分层的(嵌套项目)或动态的(在运行时从字段、数组或公式创建)。值列表可以存储一个值,同时显示另一个值,这就是您在保存客户 ID 的同时显示客户姓名的方式。

我可以在运行时更改 4D 表单吗?

是的。动态表单使用 DIALOG、FORM LOAD 和 FORM GOTO PAGE 等命令在应用程序运行时加载表单、切换页面和更改对象属性。这支持向导式流程和基于角色的界面,其中一种表单服务于不同的用户。

为什么我的 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.