一步一步学习使用LiveBindings(4) 使用LiveBindings同步多个控件的数据
一步一步学习使用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的双向数据绑定的威力,当然目前仍然没有过多的编码,也没有涉及到任何的细节,不用急,在这个系列中,将会逐渐进行深入。
一步一步学习使用LiveBindings(4) 使用LiveBindings同步多个控件的数据的更多相关文章
- 一步一步学Silverlight 2系列(8):使用样式封装控件观感
述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- Android学习之基础知识五—Android常用的七大控件
一.TextView控件:在界面上显示一段文本信息 先看XML代码和执行效果: 代码分析: 1.android:id属性,给当前控件定义了一个唯一的标识符 2.android:layo ...
- 【Android开发学习笔记】【第四课】基础控件的学习
通过一个简单的例子来学习下面几种控件: 1.TextView:简单的文本显示控件 2.EditText:可以编辑的文本框 3.Button:按钮 4.Menu:这里指的是系统的Menu 5.Toast ...
- 通过编写串口助手工具学习MFC过程——(七)添加Tab Control控件
通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...
- AppleWatch___学习笔记(二)UI布局和UI控件
1.UI布局 直接开发,你会发现Apple Watch并不支持AutoLayout,WatchKit里有个类叫做WKInterfaceGroup,乍一看像是UIView,但是这货其实是用来布局的.从 ...
- WPF学习(三)--Menu、TabControl和DataGrid控件介绍
Menu Menu提供了菜单栏方式的多级菜单的管理和操作: 这里对Menu的样式不做任何的定制和管理 下面来对Menu进行测试: 将Menu添加到页面中 运行后,效果如下: 这里没有考虑界面效果和样式 ...
- MFC学习 标签页与属性页及各常用控件使用
参考 http://blog.csdn.net/anye3000/article/details/6700023 CTabCtrl: BOOL CTabTestDlg::OnInitDialog() ...
- IOS开发-UI学习-UIFont,字体设置及批量创建控件
在IOS 中,使用[UIFont familyNames]这个方法获取72种系统字体. 使用[UIFont fontWithName:@"Zapfino" size:18]这个方法 ...
- bootstrap学习之利用CSS属性pointer-events禁用表单控件
参考链接: CSS3 pointer-events:none应用举例及扩展 首先pointer-events在除去SVG中的应用只有两个值:AUTO | NONE pointer-events:non ...
- .Net语言 APP开发平台——Smobiler学习日志:如何在手机上快速实现CandleStickChart控件
最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的”Smobil ...
随机推荐
- web ctf日记
X-Forworded-For:从本地访问 Refer:从**网址访问 一句话木马:`<?php @eval($_POST['a']);?>` eval将a作为PHP程序post进入(用蚁 ...
- RBMQ案例二:工作队列模式
工作队列模式 工作队列(又名:任务队列)背后的主要思想是避免立即执行资源密集型任务而不得不等待它完成.相反,我们安排任务稍后完成.我们将任务封装 为消息并将其发送到队列.在后台运行的工作进程将弹出任务 ...
- 【转载】controller-runtime之manager的实现
介绍 在controller-runtime中使用一个 Manager 的接口来管理 Controller,除了控制器其实还可以管理A dmission Webhook,也包括访问资源对象的clien ...
- 使用ajax实现验证码
java后台的servlet: 1 @WebServlet(value = "/login.love",name = "AjaxLoginServlet") 2 ...
- 抖音主播选品到复盘:8款增长工具提升直播ROI
随着短视频和直播电商的快速崛起,抖音直播成为品牌和主播们争相布局的风口.想要在激烈的直播竞争中脱颖而出,主播不仅需要精准选品,更要借助多样的增长工具,提升直播的观众转化和最终ROI(投资回报率).本文 ...
- Java执行cmd
JAVA 执行dos命令 String cmd = "ping www.baidu.com"; try { Process process = Runtime.getRuntime ...
- 垃圾PTA:7-2 统计数字字符和空格
本题要求编写程序,输入一行字符,统计其中数字字符.空格和其他字符的个数.建议使用switch语句编写. 输入格式:输入在一行中给出若干字符,最后一个回车表示输入结束,不算在内. 输出格式:在一行内按照 ...
- WDA SEARCH step by step
之前写了不少的东西,其实大多数都是给自己看的,我的习惯是把资料放到网上,用的时候直接看博客. 之前硬盘轻轻摔了一下,几年的资料没了,然后就再也不用硬盘了. 昨天有人突然问我关于WDA的问题,毕竟奇怪, ...
- [CSP-S 2022] 星战
link 我为什么会在赛时想图论分块.... 什么神仙会想到哈希维护啊 首先手玩一下满足条件的图,只需要满足条件二:所有点出度为 1,条件 1 会自然满足,我们必然可以顺着其出边走下去. 对于操作 2 ...
- C# 列出所有双色球的组合
using System; class Program { static void Main(string[] args) { int[] redBalls = new int[33]; for (i ...