问题标签 [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.
delphi - LiveBinding 的用法
我不明白 LiveBinding 的目的。我想知道 LiveBinding 在哪些情况下最有价值。Embarcadero 的手册对其进行了描述:“LiveBindings 是 RAD Studio 中的 VCL 和 FireMonkey 框架都支持的数据绑定功能。LiveBindings 是基于表达式的框架,这意味着它使用绑定表达式将对象绑定到其他对象或数据集字段” .
谢谢,但我仍然不知道比以前更多。
我看过一些视频,其中一个人花费 12 分钟和百分之一的点击将 TLabel 的标题连接到 TListBox 控件。当用户单击 ListBox 中的项目时,项目的名称将显示在标签中。我可以用一行代码(很少的击键和没有鼠标点击)就可以做到这一点。我不是在批评 LiveBinding。我是说我不明白它在哪里有帮助。我错过了一些东西。由于它没有做一些无法通过代码完成的事情,这意味着它正在做一些可以通过代码完成的事情,但视觉上要快得多。我承认我没有在这个主题上投入很多时间,但是无论我在哪里看到,我都看到了一种非常复杂的方式(来吧,你真的需要 5 个额外的控件来使 LiveBinding 工作?)来完成一个简单的任务。
此外,LiveBinding 似乎主要是为 DB 设计的。所有示例都将包括某种数据库连接。但我只对可以使用 LiveBindings 并且不涉及数据集/数据库的情况特别感兴趣。我没有那么多使用数据库。
delphi - 如何通过 LiveBindings 对 TComboBox 进行编程更改?
我有一个包含两个组合框的表单,这两个组合框都包含相同的项目列表,并且需要彼此保持完美同步。(它们代表 a 的两个不同选项卡上的相同选项列表TPageControl
。)
为了完成这项工作,我设置了一个 LiveBinding 以将两个控件绑定到 ClientDataset 的同一字段,该字段的存在仅用于保持此表单上的控件同步。我的两个组合框TBindingsList
都有一个TLinkControlToField
,将它们链接到同一个字段。
一切正常,只要我在 GUI 中进行所有更改。
但是,如果一个不相关的动作改变了其中一个框的选择状态,它们就会不同步:
在此之后,无论出于何种原因,cboMainValue
显示预期的文本,同时cboAltValue
保持空白(即ItemIndex = -1
)。
我尝试设置Text
属性而不是ItemIndex
,并编辑 ClientDataset 上支持字段的值,但这些都不会产生不同的结果。
有谁知道如何以编程方式更改一个组合框的状态并使 LiveBindings 更新另一个组合框以匹配它?
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 添加导航器也是如此。
我感谢您的帮助和时间。
delphi - Delphi - 如何将枚举器类型的项目绑定到组合框并将所选项目绑定到对象
我创建了一些自定义枚举器集。
例子:
现在我想用我的集合中定义的所有项目填充一个组合框。所以我的第一个想法是使用 TypeInfo、GetEnumName 和 GetEnumValue-Functions。
(我尝试使用单独的适配器将 TStringList 绑定到 ComboBox,但这没有用)。
填充我的 ComboBox 后,我继续使用 LiveBindings 将属性“SelectedValue”绑定到我的对象的 TStatus 属性,该属性简称为状态。
虽然存在三个问题。
即使我为状态属性分配了默认值,当我滚动浏览对象时,组合框也不显示任何值。
组合框中的项目数量为:
因此,如果我有 2 个对象,我的 Combobox 中有 6 个项目,而它应该保持在 4
如果我从组合框中选择一个值并希望将其发布到我的对象,它不会访问我的 Setter-Function。
这整个 Live Bindings 的东西对我来说仍然是新的,但我想正确地学习它。
因此,如果您能帮助我解决这些问题,将不胜感激。
感谢您的时间。
编辑:我的 Delphi 版本是 10.1 Berlin,我使用 VCL,目标平台仅限 Windows。
Edit2: https ://www.dropbox.com/s/u7znetur723q6i2/DBApp.7z?dl=0 这是我的项目文件。
delphi - 在表单中实时绑定现有的用户对象
我正在尝试在 VCL 表单上使用实时绑定,其中要绑定到表单上控件的对象作为属性传递给表单。我正在使用 10.1 柏林。对象中传递的属性是普通的:
我已经使用 DataGeneratorAdapter 和 AdapterBindSource 来使用设计器在表单上设置链接。
我缺乏理解的地方是 OnCreateAdapter 方法中的 AdapterBindSource。我能找到的所有示例都显示了如何创建一个由控件填充的新对象,但我找不到在 runtinme fProjectObject(传递的对象)处绑定的方法。
我当前在 OnCreateAdapter 方法中的代码是:
编译器可以接受,但不允许控件显示和更新 fProjectObject 中的属性。
显示此表单(项目编辑表单)的代码部分之一如下所示:
其中ProjEdit是项目编辑表单,ProjectObject是项目对象传入的属性,Proj是要编辑的项目对象。项目对象被简单地传递到此表单并在对信息进行任何更改后存储。此对象在传递给此表单进行编辑之前存储在数据库中。
如何将 livebindings 连接到传递的对象?
在此先感谢您的帮助
delphi - Delphi Berlin FMX Combobox 值通过 LiveBindings
我有combobox
以下手动输入的值:Active
, Inactive
. 但是我只想保存值A
或I
在我的数据库中。我该怎么做livebindings
?