问题标签 [livebindings]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1477 浏览

delphi - 我可以将 Delphi TEdit(或类似的)简单地连接到类的已发布属性吗?

我多年来一直有这个问题,但也许现在可以轻松解决它。我需要布置一个带有多个 TEdit 控件的面板,每个控件都应该显示并允许编辑类的已发布属性。传统上,我会使用 TEdit(或来自 Raize 或 Developer Express 库的数字衍生物)并“连接” OnKeyPress 和 OnExit 事件,在编辑文本和属性类型等之间进行转换等。所有这些都按照 Delphi 1(其生日大快了!)。

这些天我们有 RTTI 和 Live Bindings,所以理想情况下,我想要一种告诉 TEdit(或其他类似控件)关于单个已发布属性的方法,然后将建立必要的 2 路链接,而无需所有的接线和转换. 对象检查器当然可以完成这项工作,但我希望使用带标签的编辑控件进行更正式的自定义布局。简单地处理整数、浮点数和字符串就可以了,像 TDBEdit 这样字段名称是我的属性名称的东西会很棒。

我已经查看了“Bind Visually”设计器(我有 XE3),但我不确定。任何人都可以建议这样做的方法吗?谢谢。

0 投票
0 回答
549 浏览

delphi - VCL中TRAdioGroup的双向活绑定

Livebindings 的新手,到目前为止,这并不是一帆风顺的旅程。我正在尝试将一个 TRAdioGroup.ItemIndex 链接到一个整数的 TObject 属性。

所以我知道绑定列表/适配器没问题,因为对象中的其他属性正确且双向绑定到 TEdit、TStringGrid(对象列表)等。

我应该采取的步骤:

  1. 所以我放弃了一个 TRadioGroup
  2. 在 Visual Livebindings 中,我单击 (...) 并使 ItemIndex 属性“可绑定”
  3. 我拖动 Radio 的 ItemIndex 和 AdapterBindSource 的 Integer 字段之间的链接。

问题:这只是一种方式,VLB 中的箭头表示这一点。Radio 工作,但我无法通过 RadioButtons 更改对象的值,只能从 TObject 更新 RadioButtons。

所以我虽然(再次)我应该:

  1. 删除链接 创建一个新的 BindingExpression
  2. 方向=双向
  3. 控制组件/表达式:MyRadioGroup/ItemIndex
  4. 源组件/表达式:MyAdapterBindSource/MyIntegerField

但后来我得到错误:

0 投票
1 回答
628 浏览

delphi - 如何从与 Live Bindings 链接的自定义组件访问数据集?

我正在创建自己的从 TMSFMXGrid 派生的 DBGrid。如果使用 Live Bindings 链接,我如何找出链接到该网格的数据集?在设计时,您可以在对象检查器属性 LiveBinding 中看到,但在运行时无法访问。否则我将不得不发布我自己的属性,您可以在其中定义使用的数据集。

0 投票
2 回答
1375 浏览

delphi - 使用 LiveBindings 选择 ListBox 后如何访问数据记录

我有一个 TSQLDataset,我使用 livebindings 将它绑定到一个列表框。当我单击列表框项目时,我希望能够从记录中访问其他数据字段,但我无法弄清楚如何做到这一点,因为我无法将数据集获取到相应的项目。
我知道我可以使用 ID 字段并将其分配给Selected.Tag使用实时绑定,但也无法弄清楚,但如果可以的话,我可以有另一个 SQLQuery,然后只返回查询的结果

SELECT * FROM Dataset WHERE ID=(Tag value)

那会起作用,但是当实时绑定填充列表框时,我不知道如何获取实时绑定来设置项目标记值。

有谁知道如何使这项工作?

0 投票
2 回答
699 浏览

delphi - how to (correctly) use an enumerated type with livebindings (TObjectBindSourceAdapter)

I'm using TObjectBindSourceAdapter to use livebindings with an object. One of the properties of the object i'm using with TObjectBindSourceAdapter has an enumerated type, but the field in the adapter is never generated when i use an enumerated type in my object

The Only solution i have found for now is to define the enumerated type as an integer in my object and typecast it. This seems to work fine but you have to keep type casting from and back the enumerated type and integers.

Here is some example code to explain what i mean.

First example which uses the enumerated type that i tried initially and does not seem to work:

Second example that seems to work by typecasting to integers

I was wondering if someone else had come across this problem and if there is perhaps some other solution to solve this without reverting to integers and keep using the enumerated types. I'm also not sure if my workaround is the common way to do this or not.

0 投票
1 回答
778 浏览

delphi - 你能在delphi xe 4中对字符串变量进行实时绑定吗

这是我的问题:我有一个标签 lblAccBalance 和一个不同单位 sAccBal:String 中的变量。有没有一种方法可以使用实时绑定 delphi xe4 将 lblAccBalance 的标题绑定到我的另一个单元中的变量的值

0 投票
1 回答
647 浏览

delphi - 如何在 Delphi XE4 中清除 LiveBindings

在使用 Delphi XE4 试验 LiveBindings 时,我从对象检查器中选择了 BindVisually。您如何清除或消除 LiveBindings?

如果我尝试通过在设计时进行编辑来删除 LiveBindings,则无法将其删除。如果我打开绑定查看器,则没有设置绑定。没有规定在设计者或对象检查器中清除生活用品。

0 投票
0 回答
259 浏览

delphi - TScrollbar.Position 和 TCheckBox.Left 之间的 LiveBindings 连接?

在 Delphi XE4 LiveBindings Designer 中,为什么我不能将 TScrollBar Position 属性连接到 TCheckBox Left 属性?因此,当我在运行时移动滚动条拇指时,这应该会改变复选框的水平位置。
在下面的图像中,您可以看到选择“ scrollbar1位置属性”字段(蓝色)时,复选框1左属性字段不是绿色的;这表明两个字段无法连接:

视觉 LiveBindings

由于 TScrollbar.Position 和 TCheckBox.Left 属性都是 Integer 类型,我不明白为什么它们无法连接。
但是,CheckedState 属性字段是绿色的,这看起来很奇怪,因为 CheckedState 是一个布尔类型。

0 投票
1 回答
606 浏览

string - 如何在 Delphi 中评估包含二进制公式的字符串?

在 Delphi XE 中,我有一个例程可以将一些复杂的公式分解为二进制公式结果,如下所示:

(1&((1|0)|1)&1)

由于我的应用程序在 SQL Server 上,我可以轻松地执行 SELECT (1&((1|0)|1)&1) As Result,SQL Server 将评估逻辑以给我 1 或 0 结果。

我似乎无法找到一种原生的 Delphi 方法来获取二进制公式的字符串表示并对其进行评估。

我查看了添加到 XE 中的 Live Bindings Evaluators,但是任何对 and/or 运算符的尝试都会引发解析器错误,所以我相信这更像是一个数学过程。

我还查看了一些解析器,但似乎没有一个真的对我跳出来。

那么我该如何做类似的事情:

iSomeInt := 评估('(1&((1|0)|1)&1)');

顺便说一句..我可以完全修改公式并使用和/或代替 &|.. 这只是为了使它与 SQL Server 一起工作。

0 投票
3 回答
7740 浏览

delphi - 在 livebindings CustomFormat 中使用 Format

我正在尝试使用 LiveBindings 格式化数字以在 FireMonkey 表单的 TEdit 中显示。

我正在尝试使用绑定的 CustomFormat 中的 Format 方法来格式化带有两位小数的数字。

我可以“硬编码”输出:

这是有效的,但我无法确定要使用什么格式字符串。如果我尝试使用标准格式字符串,例如,

我收到运行时错误“格式无效或与参数不兼容”。

事实上,每当我在格式字符串中包含一个 % 符号时,我都会收到一个错误,所以我猜测 Format 需要不同类型的参数,但我找不到任何文档来说明正确的格式字符串是什么。