上下文变量

已完成

上下文变量类似于全局变量,但仅在创建屏幕中引用。 尽管可以为变量设置用户名以在整个应用中引用变量,但上下文变量无法在其他屏幕上使用这一事实仍然存在优势。

有时您希望在多个屏幕上使用变量驱动的功能。 例如,许多应用使用弹出式对话框来确认删除记录等操作。 实现此目的的常用方法是在用户选择删除按钮时将上下文变量设置为 true。 为此,将按钮的 OnSelect 属性设置为以下值。

UpdateContext({varShowPopUp: true})

然后将弹出控件的 Visible 属性设置为 varShowPopUp。 这与全局变量示例类似。 主要区别在于可重用性。 如将控件复制到其他屏幕(使用 Ctrl+C),将获得两个 varShowPopUp 实例。 这两个实例使用相同的名称,但可能具有不同的值。 Screen1 上的 varShowPopUp 值不影响 screen2 上的 varShowPopUp 值,因为每个上下文变量均限定在所处屏幕上(即使具有相同的名称)。

通常不建议重复使用变量名称,否则容易产生混淆,但这种方法特别适用于在不同的屏幕上独立重用功能的情况。

如果不确定应使用全局变量还是上下文变量,通常默认使用全局变量。 全局变量随处可用,灵活性最高。

UpdateContext 函数的一个独特行为是可以一次声明多个变量。 使用Set函数无法做到这一点。 要使用单个公式创建多个上下文变量,请使用逗号隔开变量。

UpdateContext({varCount: 1, varActive: true, varName: User().FullName})

注意

在上个模块中,我们提到内联使用 User() 函数将不必要地拖慢应用速度,因此应使用OnStart全局变量。 与内联使用 User() 函数相比,使用上下文变量存储用户信息将提高性能,但其最终性能低于全局变量,因为每次打开页面时仍需调用数据源。 因此,建议在全局变量中存储用户信息。

要使用全局变量执行相同的操作,您需使用以下内容。

Set(varCount, 1);Set(varActive, true);Set(varName, User().FullName)

下一单元将介绍如何在集合变量中存储数据表。