刘兄 發表於 2025-8-2 09:26:00

一步一步学习使用LiveBindings(4) 使用LiveBindings同步多个控件的数据

<p>假定有一个TStringGrid控件和一个TListBox控件,想要同步两个控件的数据显示,比如在TStringGrid上输入一个字段串,在TListBox控件上马上看到更新,这通常需要编写事件处理代码。LiveBindings提供了双向数据绑定,让开发人员可以分分钟实现一个多控件同步的程序,这个示例的运行效果如下图所示:<br>
<img src="https://img2024.cnblogs.com/blog/22554/202508/22554-20250802082859960-2076834232.gif"></p>
<p>请按如下的步骤来实现这个例子:</p>
<p><strong>1. 单击主菜单中的 File &gt; New &gt; Multi-Device Application - Delphi &gt; Blank Application ,创建一个新的多设备应用程序。</strong><br>
建议立即单击工具栏上的Save All按钮,将单元文件保存为uMainForm.pas,将项目保存为LiveBinding_DataSync.dproj。</p>
<p>你的项目结构应该像这样:<br>
<img src="https://img2024.cnblogs.com/blog/22554/202508/22554-20250802083107500-1777501676.png"></p>
<p><strong>2. 从工具面板,拖如下的控件到主窗体。</strong></p>
<ul>
<li>TPrototypeBindSource —— 将提供示例数据。</li>
<li>TBindNavigator —— 将为示例数据提供导航功能。</li>
<li>TListBox —— 将显示某些信息(例如AlphaColor名称)。</li>
<li>TStringGrid —— 将显示关于示例数据的所有信息。</li>
</ul>
<p>右击PrototypeBindSource1控件,从弹出的菜单中选择“Fields Editor”,添加BitmapName和ColorsName 2个示例字段,如下图所示。<br>
<img src="https://img2024.cnblogs.com/blog/22554/202508/22554-20250802085414665-2013838492.png"></p>
<p><strong>3. 接下来右击任意位置,从弹出的菜单中选择“Bind Visually”菜单项,打开LiveBindings Designer,在设计器中,开始进行快速绑定操作。</strong><br>
<img src="https://img2024.cnblogs.com/blog/22554/202508/22554-20250802090942107-1948644998.gif"></p>
<p>绑定连接如下:</p>
<ul>
<li>将 PrototypeBindSource1 的 * 属性绑定到 BindNavigator1 的 * 属性。</li>
<li>将 PrototypeBindSource1 的 * 属性绑定到 StringGrid1 的 * 属性。</li>
<li>将 PrototypeBindSource1 的 * 属性绑定到 ListBox1 的 Synch 属性。</li>
<li>将 PrototypeBindSource1 的 BitmapName1 属性绑定到 ListBox1 的 Item.Text 属性。</li>
</ul>
<p>ListBox和ListView都有Synch绑定项,主要作用如下:</p>
<ul>
<li>保持选中项同步:当你在 TListBox 中选择一个项目时,它会自动同步到绑定的数据源中的对应记录</li>
<li>双向数据流:不仅从数据源到 UI 的显示同步,还包括从 UI 选择回到数据源的同步</li>
</ul>
<p>TStringGrid的*绑定到PrototypeBindingSource1的*,则表示使用PrototypeBindingSource1中的所有字段自动创建TStringGrid的列。</p>
<p><em>注意:如果数据源的结构发生变化(如字段增减),绑定 * 的网格会自动调整列结构以匹配。</em></p>
<p>现在,可以看到LiveBindings的双向数据绑定的威力,当然目前仍然没有过多的编码,也没有涉及到任何的细节,不用急,在这个系列中,将会逐渐进行深入。</p><br><br>
来源:https://www.cnblogs.com/lincats/p/19017961
頁: [1]
查看完整版本: 一步一步学习使用LiveBindings(4) 使用LiveBindings同步多个控件的数据