delphi - Delphi xe2中的实时绑定(bind)列表框

标签 delphi delphi-xe2 livebindings

如何通过接受对两个列表框中可用的任何列表框的任何更改来同步两个 TListBox 对象。

======================更新============================ =========================
这个问题在第一个答案后更新

如果我们必须使用

bindingslist1.Notify(ListBox2,''); 

一直在对列表框进行更改,使用 livebibnding 而不是使用的目的是什么
ListBox1.Items.Assign(ListBox2.Items ); 

变化无时无刻不在发生。

最佳答案

简而言之,这就是我作为 firemonkey 应用程序的方式,我猜同样应该与 vcl 一起使用:

创建一个新的 firemonkey HD 应用程序

添加两个列表框
添加编辑和按钮(用于输入数据)

Listbox1 -> Livebindings -> 新建 Livebinding -> TBindExpression

名为 BindingsList1 的新组件会自动添加到表单中

编辑新的 bindexpression 属性(对我来说是 BindExpressionListBox11)

Direction = DirBiDirectional
Managed = true
NotifyOutputs = true
ControlExpression = Items
SourceExpression = Items

创建一个 buttonclick 事件(或者您可以将其放入 onChanged 但由于某种原因在添加项目时不会被调用。如果您在列表中选择某些内容,它会被调用):
procedure TForm1.Button1Click(Sender: TObject);
begin
   listbox2.Items.Add(edit1.Text);
   bindingslist1.Notify(listbox2, '');
end;

现在,每当您将项目添加到 listbox2 时,更改也会反射(reflect)到 listbox1 中,反之亦然(由于 dirBiDirectional 设置)。如果改为添加到 listbox1,则需要调用:
bindingslist1.Notify(listbox1, '');

希望这有助于您入门。

Embarcadero 也有一些很好的活绑定(bind)东西@http://docwiki.embarcadero.com/RADStudio/en/LiveBindings_in_RAD_Studio

关于delphi - Delphi xe2中的实时绑定(bind)列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8426995/

相关文章:

delphi - 比较备忘录中的文字和其他备忘录?

delphi - 防止枚举类型数组的调试信息出现在 EXE 中

delphi - 是否可以在保留现有组件库注册的同时完全重新安装 Delphi XE2(例如更新#4)?

delphi - Embarcadero RAD Studio XE2 中是否有可能( native )嵌套表单?

delphi - TComponent 中的 Observers 属性

delphi - 将 AlphaBlend 属性添加到面板

delphi - 为什么我在 Delphi XE2 中收到错误缺少接口(interface)方法的实现?

xcode - XE2 FireMonkey - 连接到 iOS 应用程序中的 Web 服务

delphi - 使用 LiveBindings 监控列表

delphi - LiveBinding值无法通过代码设置