一步一步学习使用LiveBindings(4) 使用LiveBindings同步多个控件的数据
假定有一个TStringGrid控件和一个TListBox控件,想要同步两个控件的数据显示,比如在TStringGrid上输入一个字段串,在TListBox控件上马上看到更新,这通常需要编写事件处理代码。LiveBindings提供了双向数据绑定,让开发人员可以分分钟实现一个多控件同步的程序,这个示例的运行效果如下图所示:
请按如下的步骤来实现这个例子:
1. 单击主菜单中的 File > New > Multi-Device Application - Delphi > Blank Application ,创建一个新的多设备应用程序。
建议立即单击工具栏上的Save All按钮,将单元文件保存为uMainForm.pas,将项目保存为LiveBinding_DataSync.dproj。
你的项目结构应该像这样:
2. 从工具面板,拖如下的控件到主窗体。
- TPrototypeBindSource —— 将提供示例数据。
- TBindNavigator —— 将为示例数据提供导航功能。
- TListBox —— 将显示某些信息(例如AlphaColor名称)。
- TStringGrid —— 将显示关于示例数据的所有信息。
右击PrototypeBindSource1控件,从弹出的菜单中选择“Fields Editor”,添加BitmapName和ColorsName 2个示例字段,如下图所示。
3. 接下来右击任意位置,从弹出的菜单中选择“Bind Visually”菜单项,打开LiveBindings Designer,在设计器中,开始进行快速绑定操作。
绑定连接如下:
- 将 PrototypeBindSource1 的 * 属性绑定到 BindNavigator1 的 * 属性。
- 将 PrototypeBindSource1 的 * 属性绑定到 StringGrid1 的 * 属性。
- 将 PrototypeBindSource1 的 * 属性绑定到 ListBox1 的 Synch 属性。
- 将 PrototypeBindSource1 的 BitmapName1 属性绑定到 ListBox1 的 Item.Text 属性。
ListBox和ListView都有Synch绑定项,主要作用如下:
- 保持选中项同步:当你在 TListBox 中选择一个项目时,它会自动同步到绑定的数据源中的对应记录
- 双向数据流:不仅从数据源到 UI 的显示同步,还包括从 UI 选择回到数据源的同步
TStringGrid的*绑定到PrototypeBindingSource1的*,则表示使用PrototypeBindingSource1中的所有字段自动创建TStringGrid的列。
注意:如果数据源的结构发生变化(如字段增减),绑定 * 的网格会自动调整列结构以匹配。
现在,可以看到LiveBindings的双向数据绑定的威力,当然目前仍然没有过多的编码,也没有涉及到任何的细节,不用急,在这个系列中,将会逐渐进行深入。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |