Delphi xe2中的生活绑定列表框

时间:2011-12-08 06:19:22

标签: delphi delphi-xe2 livebindings

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

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

如果我们必须使用

bindingslist1.Notify(ListBox2,''); 

一直在对列表框进行更改,使用livebibnding而不是使用

的目的是什么
ListBox1.Items.Assign(ListBox2.Items ); 

一直发生变化。

1 个答案:

答案 0 :(得分:2)

简而言之,这是我作为firemonkey应用程序执行此操作的方式,同样适用于vcl我猜:

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

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

Listbox1 - >生物绑定 - >新的生物绑定 - > 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添加项目时,更改都会反映到listbox1,反之亦然(由于dirBiDirectional设置)。如果改为添加到listbox1,则需要调用:

bindingslist1.Notify(listbox1, '');

希望这有助于您入门。

Embarcadero还有一些很好的实时绑定内容@ http://docwiki.embarcadero.com/RADStudio/en/LiveBindings_in_RAD_Studio