问题标签 [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 回答
1699 浏览

delphi - LiveBinding 的用法

我不明白 LiveBinding 的目的。我想知道 LiveBinding 在哪些情况下最有价值。Embarcadero 的手册对其进行了描述:“LiveBindings 是 RAD Studio 中的 VCL 和 FireMonkey 框架都支持的数据绑定功能。LiveBindings 是基于表达式的框架,这意味着它使用绑定表达式将对象绑定到其他对象或数据集字段” .
谢谢,但我仍然不知道比以前更多。

我看过一些视频,其中一个人花费 12 分钟和百分之一的点击将 TLabel 的标题连接到 TListBox 控件。当用户单击 ListBox 中的项目时,项目的名称将显示在标签中。我可以用一行代码(很少的击键和没有鼠标点击)就可以做到这一点。我不是在批评 LiveBinding。我是说我不明白它在哪里有帮助。我错过了一些东西。由于它没有做一些无法通过代码完成的事情,这意味着它正在做一些可以通过代码完成的事情,但视觉上要快得多。我承认我没有在这个主题上投入很多时间,但是无论我在哪里看到,我都看到了一种非常复杂的方式(来吧,你真的需要 5 个额外的控件来使 LiveBinding 工作?)来完成一个简单的任务。

此外,LiveBinding 似乎主要是为 DB 设计的。所有示例都将包括某种数据库连接。但我只对可以使用 LiveBindings 并且不涉及数据集/数据库的情况特别感兴趣。我没有那么多使用数据库。

0 投票
1 回答
358 浏览

delphi - 如何通过 LiveBindings 对 TComboBox 进行编程更改?

我有一个包含两个组合框的表单,这两个组合框都包含相同的项目列表,并且需要彼此保持完美同步。(它们代表 a 的两个不同选项卡上的相同选项列表TPageControl。)

为了完成这项工作,我设置了一个 LiveBinding 以将两个控件绑定到 ClientDataset 的同一字段,该字段的存在仅用于保持此表单上的控件同步。我的两个组合框TBindingsList都有一个TLinkControlToField,将它们链接到同一个字段。

一切正常,只要我在 GUI 中进行所有更改。

但是,如果一个不相关的动作改变了其中一个框的选择状态,它们就会不同步:

在此之后,无论出于何种原因,cboMainValue显示预期的文本,同时cboAltValue保持空白(即ItemIndex = -1)。

我尝试设置Text属性而不是ItemIndex,并编辑 ClientDataset 上支持字段的值,但这些都不会产生不同的结果。

有谁知道如何以编程方式更改一个组合框的状态并使 LiveBindings 更新另一个组合框以匹配它?

0 投票
1 回答
246 浏览

delphi - 如何在 Delphis LiveBindings 中提取 BindSource 的对象?

在 Delphi 10.1 中,我有一个名为 DogCollection 的 ObjectList,每个条目都是 TDog 类型,这是一个自定义类。

感谢 malcolm groves 的教程,我能够用我的 DogCollection 填充 Stringgrid。

http://www.malcolmgroves.com/blog/?p=1084

现在我希望能够滚动字符串网格,并且每次滚动时,我都想从 TDog 类型更新变量“CurrentDog”,无论字符串网格中突出显示的是什么对象。

所以我有一个关于我的 DogObjects 的概述以及我可以独立查看/操作的我的 Dog 的单个对象。

在这一点上,我没有想法。

如果对您有任何帮助,我也无法触发适配器的 AfterScroll 事件,即使我使用 RightClick->Add Navigator 添加导航器也是如此。

我感谢您的帮助和时间。

0 投票
1 回答
1027 浏览

delphi - Delphi - 如何将枚举器类型的项目绑定到组合框并将所选项目绑定到对象

我创建了一些自定义枚举器集。

例子:

现在我想用我的集合中定义的所有项目填充一个组合框。所以我的第一个想法是使用 TypeInfo、GetEnumName 和 GetEnumValue-Functions。

(我尝试使用单独的适配器将 TStringList 绑定到 ComboBox,但这没有用)。

填充我的 ComboBox 后,我继续使用 LiveBindings 将属性“SelectedValue”绑定到我的对象的 TStatus 属性,该属性简称为状态。

虽然存在三个问题。

  1. 即使我为状态属性分配了默认值,当我滚动浏览对象时,组合框也不显示任何值。

  2. 组合框中的项目数量为:

    因此,如果我有 2 个对象,我的 Combobox 中有 6 个项目,而它应该保持在 4

  3. 如果我从组合框中选择一个值并希望将其发布到我的对象,它不会访问我的 Setter-Function。

这整个 Live Bindings 的东西对我来说仍然是新的,但我想正确地学习它。

因此,如果您能帮助我解决这些问题,将不胜感激。

感谢您的时间。

编辑:我的 Delphi 版本是 10.1 Berlin,我使用 VCL,目标平台仅限 Windows。

Edit2: https ://www.dropbox.com/s/u7znetur723q6i2/DBApp.7z?dl=0 这是我的项目文件。

0 投票
1 回答
756 浏览

delphi - Delphi LiveBindings TPrototypeBindSource 和 customFormat

我使用带有 TPrototypeBindSource 的业务类。我将使用 CustomFormat 连接 2 个字段。我来的是 TBindSourceDB,但不是 TPrototypBindSource。

我使用 TEdit 和 TLinkControlToField。

如果我使用 : %s + " text" => 它可以正常工作。当我将它与 TBindSourceDB 一起使用时,效果很好

但是当我使用 TPrototypeBindSource 时,我不明白如何访问数据。

在此处输入图像描述

在此处输入图像描述

你能给我用业务类绑定连接 2 个字段的语法吗?

0 投票
1 回答
166 浏览

delphi - Delphi:TListView 上的 Livebindings AfterScroll

我有一个 TListView 和一个 TObjectList。我将 TFoo.value 绑定到 Item.Caption。我写了一个程序“AfterScroll”,里面有一个显示消息。我在 TBindSourceAdapter.AfterScroll 上连接程序。

我运行这个程序,我只有一个显示消息。

如果我用 TStringGrid 替换 TListView,我在每一行都有显示消息。

在此处输入图像描述

可以在 TListView 上连接“AfterScroll”事件吗?

0 投票
2 回答
245 浏览

delphi - 在表单中实时绑定现有的用户对象

我正在尝试在 VCL 表单上使用实时绑定,其中要绑定到表单上控件的对象作为属性传递给表单。我正在使用 10.1 柏林。对象中传递的属性是普通的:

我已经使用 DataGeneratorAdapter 和 AdapterBindSource 来使用设计器在表单上设置链接。

我缺乏理解的地方是 OnCreateAdapter 方法中的 AdapterBindSource。我能找到的所有示例都显示了如何创建一个由控件填充的新对象,但我找不到在 runtinme fProjectObject(传递的对象)处绑定的方法。

我当前在 OnCreateAdapter 方法中的代码是:

编译器可以接受,但不允许控件显示和更新 fProjectObject 中的属性。

显示此表单(项目编辑表单)的代码部分之一如下所示:

其中ProjEdit是项目编辑表单,ProjectObject是项目对象传入的属性,Proj是要编辑的项目对象。项目对象被简单地传递到此表单并在对信息进行任何更改后存储。此对象在传递给此表单进行编辑之前存储在数据库中。

如何将 livebindings 连接到传递的对象?

在此先感谢您的帮助

0 投票
1 回答
1522 浏览

delphi - Delphi Berlin FMX Combobox 值通过 LiveBindings

我有combobox以下手动输入的值:Active, Inactive. 但是我只想保存值AI在我的数据库中。我该怎么做livebindings

0 投票
0 回答
153 浏览

oop - 将组合框与 OO 绑定

我有 2 个商务舱。这些类由数据库加载。“产品”类有一个属性“类别”,它是类别的一个实例。

在此处输入图像描述

在此处输入图像描述

但是当我启动程序时,它的组合框会加载类别列表。但我没有选中的项目。我认为问题在这里:

我不想在我的类“产品”上创建一个“CategoryID”。在 OO 类上绑定组合框的好方法是什么?

0 投票
1 回答
492 浏览

firemonkey - 如何使用 Livebinds 从数据库加载图像?

我从网络服务下载图像,然后保存到 TBitmap 并使用命令:bmpExample.SaveToStream(stExample);并将流保存到我的数据库(SQLite) PS:该列是 Blob 字段。

直到这里一切正常!我可以在“数据”选项卡上看到图像,当我尝试将图像加载回我的应用程序(firemonkey)时,问题就开始了。我正在使用 livebinds 工具并以这种方式将我的 ListView 链接到我的 Query ( select * from empresa) 中:

在此处输入图像描述

标题和文本加载正常,唯一的问题是图像(我知道它存在,因为我可以在我的 SQL 编辑器的“数据”选项卡上看到。

在此处输入图像描述