LiveBindings 是 RAD Studio 中 VCL 和 FireMonkey 框架都支持的数据绑定功能。
LiveBindings 是一个基于表达式的框架,这意味着它使用绑定表达式将对象绑定到其他对象或数据集字段。
LiveBindings 概述
LiveBindings 基于关系表达式,即绑定表达式,可以是单向的,也可以是双向的。LiveBindings 还涉及控制对象和源对象。通过绑定表达式,任何对象都可以绑定到任何其他对象,只需定义一个绑定表达式,其中涉及要绑定到一起的对象的一个或多个属性即可。例如,可以将 TEdit 控件绑定到 TLabel 上,这样当编辑框中的文本发生变化时,标签的标题就会自动调整为绑定表达式所绑定的TEdit的值。另一个例子是将轨迹条控件与进度条绑定,这样当您移动轨迹条时,进度条就会上升或下降。
以同样的方式,您可以连接到数据集字段,更改不同对象的一个或多个属性,等等。由于 LiveBindings 会传播,因此你甚至可以更改与绑定到控制对象的其他对象相连的对象的属性。
创建 LiveBindings
创建绑定的主要方法是使用 LiveBindings Designer。设计器只能创建 QuickBindings 组件。该图显示其他组件(如 TBindLink)的绑定,但不能像 QuickBinding 组件那样移动端点。
创建此类绑定的第二种方法是使用 LiveBindings Wizard。它也只能创建 QuickBinding 组件。
LiveBindings 设计器使用 QuickBindings 创建此类绑定(这也反映在向导中):
- 将 TEdit 等控件链接到数据源中的字段
- 将 TGrid 等控件链接到数据源
- 将 TEdit 等控件链接至组件属性(如 TLabel.Text)
- 将组件属性链接到数据源中的字段
一个控件只能链接到一个端点。因此,如果一个 TEdit 已链接到一个字段,而你试图将 TEdit 链接到一个组件属性,那么该字段的链接将被删除。此外,一个组件属性只能链接到一个端点。数据源和数据源成员可以链接到多个端点。例如,一个字段可以链接到 TEdit,也可以链接到 TLabel。这将涉及两个绑定组件。
尽管 LiveBindings Designer 不允许一个控件链接到其他两个组件属性,但可以通过将控件和组件属性链接到一个字段来实现这种效果。为此,您可以使用 TPrototypeBindSource 组件来创建一个字段。
LiveBindings 和 API 文档中使用的 “链接”(Link)一词表示,绑定会识别用户所做的更改,并自动更新控件和数据源,以响应用户的输入。
使用 LiveBindings
在 VCL 表单应用程序和 FireMonkey 应用程序中,您可以使用 LiveBindings 设计器或 LiveBindings 向导来使用 LiveBindings。请注意,您可以通过 “Object Inspector”或右键单击窗体上的单个组件来调用向导(但前提是之前已在 Tools > Options > LiveBindings 对话框中启用了向导)。
有关如何在 RAD Studio 中创建 LiveBindings 的快速概述,请参阅Creating LiveBindings, New LiveBinding 或 LiveBindings Wizard主题。请参阅教程: 以编程方式使用 LiveBinding,了解以编程方式创建 LiveBindings 的说明(如果出于某种原因需要这样做)。
使用 LiveBindings Designer在 VCL 或 FireMonkey 应用程序中使用 LiveBindings 的教程
- Tutorial: Linking Controls via LiveBindings Designer
- Tutorial: Using TPrototypeBindSource and the LiveBindings Designer
使用 LiveBindings Wizard 无缝创建 LiveBindings 的快速方法(QuickBindings)
- Linking a Control with a Field
- Linking a Control with a Component Property
- Linking a Property of a Component with a Control
- Linking a Property of a Component with a Field
- Creating a Data Source (LiveBindings Wizard)
如何使用 LiveBindings Wizard 使用 LiveBindings VCL 或 FireMonkey 应用程序的教程
- Tutorial: Using LiveBindings in FireMonkey Applications (示例了FireMonky空白应用程序的属性绑定)
- Tutorial: Using LiveBinding Programatically (仅适合 Console Applications 或手动编辑表达式)
- Tutorial: Using LiveBindings to Create an Application Without Code (使用 LiveBindings 构建的空白应用程序示例)
- Tutorial: Using LiveBinding in VCL Applications (示例 VCL 应用程序属性绑定)
关于如何使用 LiveBindings 特定功能的主题
- Using Custom Format and Parse Expressions
使用评估快捷键
在填充包含列表或表格数据的控件(如列表视图、网格或组合框)时,某些绑定组件支持的评估快捷方式可以提高性能。
注意:评估快捷方式无法提高填充 FireMonkey 网格的绑定组件的性能。
支持评估快捷方式的绑定组件通常默认使用评估快捷方式,因为评估快捷方式可以更快地评估不使用自定义格式或解析表达式的绑定表达式。
不过,使用评估快捷方式需要绑定组件首先检查绑定表达式,以确定它们是否使用了自定义格式或解析表达式。如果所有或大部分绑定表达式都使用了自定义格式或解析表达式,那么执行检查所需的处理量可能比使用求值快捷方式节省的处理量(如果有的话)还要高。支持求值的绑定组件通常会提供一个布尔属性 UseEvalShortcuts,你可以将其设置为 False 以禁用求值快捷方式。
LiveBindings 可视化组件
LiveBindings 引擎是一个运行时功能,但在Tool Palette中有许多可视化组件,可帮助( create live bindings between components)您在设计时创建组件之间的实时绑定。有时,你也可以使用 LiveBindings 向导(LiveBindings Wizard)或 LiveBindings 设计器(LiveBindings Designer),以可视化方式创建绑定。
如果浏览工具选项板中的 LiveBindings 或 LiveBindings Misc 选项卡,可以将以下组件拖放到窗体(VCL 或 FireMonkey)中。
- LiveBindings
控件 Logo | 控件名称 | 说明 |
| TBindSourceDB | 用于创建数据库绑定。 |
TPrototypeBindSource | 提供了一个用于生成样本数据的数据源,在没有数据的情况下,您可以使用该数据源开始工作。稍后,您可以用一些真实数据替换该数据源。 | |
TBindSourceDBX | 用于创建与数据库的绑定,使用 DBX framework. | |
TParamsAdapter | 用于将可视化控件与 DBX 命令参数绑定。 | |
TBindNavigator (FMX or VCL) | 用于在开发 FMX 或 VCL 应用程序时循环浏览数据集中的记录。 |
- LiveBindings 其他
控件Logo | 控件名称 | 说明 |
TBindingsList | 用于保持 binding lists. | |
| TDataGeneratorAdapter | 是数据生成器的适配器。 |
| TAdapterBindSource | 用于处理非数据库数据。适配器属性用于将数据源连接到非数据库数据,如对象的通用集合。 |
提示:
当您使用 LiveBindings 设计器在组件间创建实时绑定时,相应的 LiveBindings 组件(TBindingsList)会自动放置在表单上。该组件包含应用程序中所有可用绑定的列表。有关绑定列表的更多信息,请参阅绑定列表主题。
LiveBindings 示例
RAD Studio 随附了大量 LiveBindings 示例应用程序,点击开始 | 程序 | Embarcadero RAD Studio Athens | 示例即可找到。主要文件夹是 Object Pascal\LiveBinding 。在 Object Pascal\FireMonkey Desktop\ListCollections 文件夹中还有一个 LiveBinding 示例,在 FMX.ListCollections Sample 中对其进行了描述。下表列出了这些示例,并按其相应类别(FMX 或 VCL)进行了划分。其中一些示例应用程序同时适用于 FMX 和 VCL,而另一些则仅适用于这两个类别中的一个。
FMX LiveBindings Samples | VCL LiveBindings Samples |
BindGridLinkFMXProject | BindGridLinkVCLProject |
BindLinkFMXProject | BindLinkVCLProject |
N/A | OneOfEachBindCompVCL |
ListCollectionsSampleProject | N/A |
这些示例向你详细展示了如何使用 LiveBindings 构建增强型应用程序。
LiveBindings API 参考
以下单元是 LiveBindings 引擎的一部分。其相应帮助主题中的文档包含有关 LiveBindings API 使用的信息。
Unit Name | Contains |
System.Bindings.CustomScope | Custom scope-related classes |
System.Bindings.CustomWrapper | Custom wrapper-related classes |
System.Bindings.EvalProtocol | Interfaces used by the engine for the wrappers, scopes, and other internal structures |
System.Bindings.Expression | Binding expression-related classes |
System.Bindings.ExpressionDefaults | Default behavior for binding expressions |
System.Bindings.Factories | Factories for expressions, managers, and scopes |
System.Bindings.Helper | Tools for programmatic creation of binding expressions and for notifications |
System.Bindings.Manager | Binding manager-related implementations |
System.Bindings.ManagerDefaults | Default behavior for binding managers |
System.Bindings.Methods | Control of methods that can be used in the script |
System.Bindings.Outputs | Tools for control of expression outputs |
Data.Bind | Contains units with implementations for the LiveBindings components |
通过 LiveBindings 同步数据
使用 RAD Studio 中的 LiveBindings,你可以同步各种数据,例如列表框控件和字符串网格,前提是两者包含相同的数据。请参阅 “通过 LiveBindings 同步数据 ”主题,了解如何通过 LiveBindings Designer 中某些组件的 Synch 和 * 属性同步数据。
创建支持 LiveBindings 的组件
要使类似 TTrackBar 这样的简单控件能够使用 LiveBindings,有两个要求。第一个要求是控件必须实现对观察者的支持。LiveBindings 依赖于观察者来订阅控件通知。第二个要求是注册控件值名称(例如:TTrackBar 组件的位置)。LiveBindings 组件使用控件值名称生成表达式,以获取和设置控件值。
有关如何创建启用 LiveBindings 的组件的更多信息,请阅读创建启用 LiveBindings 的组件教程。
Creating LiveBindings-Enabled Components