老刘家的小刘 發表於 2025-8-1 06:24:00

一步一步学习使用LiveBindings(1) 使用向导无代码创建基于绑定的FireMonkey应用程序

<p>这将是一个系列的文章,主要通过实际操作的模式一步一步来揭开LiveBindings的面纱。</p>
<p>在VCL框架中,传统的数据绑定模式是这样的:用 TDataSource 组件连接数据集和数据显示控件。数据显示控件(一般以TDB开头的控件)能自动同步数据变化,能处理用户操作,使得数据修改和更新更简单而且直观。</p>
<p>在FireMonkey中,传统的数据绑定控件与非数据绑定控件已经不再明显区分,FMX提供了一种称为LiveBindings的技术,简而言之是什么都可以用来绑定。</p>
<p>通过一个例子初步领略一下:</p>
<p><strong>1. 单击主菜单中的 File &gt; New &gt; Multi-Device Application - Delphi &gt; Blank Application ,创建一个新的多设备应用程序。</strong></p>
<p>建议立即单击工具栏上的Save All按钮,将单元文件保存为uMainForm.pas,将项目保存为LiveBinding_Wizard.dproj。</p>
<p>你的项目结构应该像这样:<br>
<img src="https://img2024.cnblogs.com/blog/22554/202508/22554-20250801063436764-833458988.png"></p>
<p><strong>2. 在工具面板中,通过搜索找到TFDMemTable组件,双击工具TFDMemTable图标添加到主窗体。</strong><br>
<img src="https://img2024.cnblogs.com/blog/22554/202508/22554-20250801062701602-987529811.png"></p>
<p>右击单击窗体上的FDMemTable1组件,从弹出的菜单中选择“Load From File...”菜单项,选择Delphi自带的一个名为biolife.FDS的示例数据文件,在笔者的电脑位于如下的位置:</p>
<p><code>C:\Users\Public\Documents\Embarcadero\Studio\23.0\Samples\Data</code></p>
<p><em>建议将biolife.FDS复制到另外一个位置,比如c:\temp\biolife.FDS,然后将此文件加载到TFDMemTable中,避免误改原来的初始数据。</em></p>
<p>接下来在属性面板,将“Active”属性设置为True。</p>
<p><strong>3. 再次在FDMemTable1组件上单击鼠标,选择“Fields Editor...”菜单项,在弹出的“Fields Editor”中,右击鼠标,选择“Add All Fields”,这样成功的加载了内存表中所有的字段。</strong><br>
<img src="https://img2024.cnblogs.com/blog/22554/202508/22554-20250801063005389-1028992958.png#pic_center"></p>
<p><strong>4. 接下来在窗体上放置一个TLabel控件,一个TEdit、TMemo、TImageControl控件以及一个TBindNavigator控件,按如下图的方式简单的排列。</strong><br>
<img src="https://img2024.cnblogs.com/blog/22554/202508/22554-20250801063408250-1122110243.png#pic_center"></p>
<p><strong>5.在窗体的空白位置右击鼠标,选择“Bind Visually”菜单项,Delphi将打开LiveBindings Designer,将这个面板拉大一些,然后单击最左侧工具栏面板最下面的一个图标,打开 LiveBindings Wizard向导。</strong><br>
<img src="https://img2024.cnblogs.com/blog/22554/202508/22554-20250801063058345-1328648624.png"></p>
<p><strong>6.在向导的第1个窗体上,选择“Link a component property with a field.”项,单击“下一步”按钮。</strong><br>
<img src="https://img2024.cnblogs.com/blog/22554/202508/22554-20250801063133159-1364186079.png"></p>
<p><em>注意:当选择不同的Link项时,左侧的导般面板会发生一些向导步骤的变化。</em></p>
<p><strong>7. 在接下来的向导窗口,指定Component为Label1,Property为Text,单击“下一步”按钮。</strong><br>
<img src="https://img2024.cnblogs.com/blog/22554/202508/22554-20250801063147220-1786418279.png"></p>
<p><strong>8. 在Data Source页面,选择第3步添加的FDMemTable1组件。</strong><br>
<img src="https://img2024.cnblogs.com/blog/22554/202508/22554-20250801063158253-1885260662.png"><br>
<strong>9. 在Field Name页面,选择“Species Name”字段名,单击“下一步”按钮。</strong><br>
<img src="https://img2024.cnblogs.com/blog/22554/202508/22554-20250801063209923-834515814.png"><br>
<strong>10. 在下一个页面保持默认,单击“完成”按钮,则TLable控件的绑定完成。</strong><br>
这时候,会发现Delphi自动向窗体添加了一个名为BindingsList1的TBindingsList控件和一个名为BindSourceDB1的TBindSourceDB控件。<br>
<img src="https://img2024.cnblogs.com/blog/22554/202508/22554-20250801063226985-311832821.png"></p>
<p>并且在LiveBindings Designer中,FDMemTable1现在被BindSourceDB1包围,有一个指向Label1的单向链接。<br>
<img src="https://img2024.cnblogs.com/blog/22554/202508/22554-20250801063235857-1400837644.png"><br>
在窗体上单击BindSourceDB1控件,在属性编辑器中可以看到它类似于传统的TDataSource控件,有一个DataSet属性已经指向了FDMemTable1控件。<br>
<img src="https://img2024.cnblogs.com/blog/22554/202508/22554-20250801063249962-503867563.png"><br>
<strong>11. 按照步骤6-10所示的向导步骤,完成如下的绑定:</strong></p>
<ul>
<li>绑定Edit1组件的Text属性到FDMemTable1的Category字段。</li>
<li>绑定Memo1组件的Text属性到FDMemTable1的Notes字段。</li>
<li>绑定ImageContrl1组件的Bitmap属性到FDMemTable1的Graphic字段。</li>
<li>将BindNavigator1组件的DataSource属性指向BindSource1组件。<br>
<em>注意:在操作向导的过程中,可以发现已经进行过绑定的字段,会显示一个链条形的图标。</em><br>
<img src="https://img2024.cnblogs.com/blog/22554/202508/22554-20250801063301014-367848144.png#pic_center"></li>
</ul>
<p><strong>12. 万事皆备,只欠一Run了,按下F9,或者是主菜单的“Run &gt; Run”,可以看到带绑定功能的窗口已经成功出现。</strong></p>
<p><em>假如您的窗体没有数据,请重新为FDMemTable1控件从文件中加载一次数据,应该就能看到绑定的效果</em></p>
<p><em>在这个窗口中,您可以通过BindNavigator进行上一条,下一条导航,由于所有的绑定是单向的,因此暂时无法更新数据回到数据源,在后续的篇幅中会介绍如何实现双向数据绑定。</em></p>
<p><img src="https://img2024.cnblogs.com/blog/22554/202508/22554-20250801063310794-1496557609.png"></p>
<p>回到LiveBindings Designer,可以看到Delphi自动为我们添加了各种链接线,单击每一条链接线,在属性编辑器上可以看到这些链接的详细信息。而且在结构面板,也可以看到每个有进行过绑定的控件下面,显示了LiveBindings结点。<br>
<img src="https://img2024.cnblogs.com/blog/22554/202508/22554-20250801063318161-570925657.png"></p>
<p>LiveBindings的核心在TBindingList组件中,双击BindingList1组件,Delphi会弹出编辑绑定的窗口,单击工具栏上的第一个按钮,可以直接新建绑定,或者重新打开"LiveBindings Wizard..."窗口。</p>
<p><img src="https://img2024.cnblogs.com/blog/22554/202508/22554-20250801063330276-1472722466.png#pic_center"></p>
<p>在接下来的文章中,我将详细介绍一些LiveBinding的概念性的东西,有兴趣的朋友可以关注。</p><br><br>
来源:https://www.cnblogs.com/lincats/p/19016228
頁: [1]
查看完整版本: 一步一步学习使用LiveBindings(1) 使用向导无代码创建基于绑定的FireMonkey应用程序