一步一步学习使用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 ...
随机推荐
- VS2019 配置 protobuf3.8.0
1.下载protobuf3.8.0 https://github.com/protocolbuffers/protobuf/releases/tag/v3.8.0 2.准备工作 解压文件并在同级目录建 ...
- Third Maximum Number——LeetCode⑬
//原题链接https://leetcode.com/problems/third-maximum-number/ 题目描述 Given a non-empty array of integers, ...
- 腾讯IMA VS 飞书知识问答:谁才是2025最强AI知识库?
AI创业失败,可私聊经验教训分享... 前几天小伙伴在讨论我开发的一套社群运营AI分身,其本质其实是一套个人知识库的AI产品,其依赖的就是我过往发布的文章. 这类AI聊天分身,最简单.不考虑" ...
- L1-5、Prompt 写作中的常见误区
语言很自然,但写法要"工程化". 为什么要重视 Prompt 的写作规范? Prompt 是"给 AI 的任务指令",不清不楚,AI 就会"乱猜&qu ...
- HanTTS简单文档
先下载 https://gitee.com/dhfhub/HanTTS 然后输入命令 main.py synthesize --text 你的话 --src "syllables/" ...
- 「Log」2023.8.23 小记
序幕 \(\texttt{7:45}\):晚起到校,补博客. 从今天开始坚持不喝饮料. 写串串. \(\color{blueviolet}{P4248\ [AHOI2013]\ 差异}\) 神奇的.式 ...
- Kubernetes控制器-Job和CronJob
Job 和 CronJob Deployment, StatefuleSet以及DaemonSet这三个控制器主要编排的对象都是"在线业务",比如我们举例常用的Nginx,MySQ ...
- 设置java程序的守护进程
1.在服务器执行:crontab -e 命令 2.在出现的界面编写cron表达式 3.编写guard_java_extbork.sh脚本 #!/bin/bash source /etc/profil ...
- ChatMoney化身恋爱大师来帮助你收获完美爱情!
本文由 ChatMoney团队出品 介绍说明 在纷繁复杂的情感世界里,寻找真爱的道路常常充满迷茫和困惑.但现在,有了 AI 智能体恋爱大师,为您的爱情之旅点亮明灯. AI 智能体恋爱大师并非传统意义上 ...
- 非常'肤浅'的理解MVVM
那天领导给了我这么一个需求,就是他会通过接口给我传递一条数据,然后我需要判断这条数据的首字母是不是A,如果是的话,就把这条数据保存下来 很简单的一个需求对吧,直接开干,代码如下 完美的解决这个问题,所 ...