前言

SmartBinding #2中,我介绍了新的自动绑定功能,支持在Form设计器中直接定义绑定。不仅如此,kbmMW SmartBind还有更多很酷的功能,即将发布的kbmMW中的SmartBind,将支持绑定Grid的单元格,行或列以及多值表达式绑定和绑定简单常量等其他功能。

绑定Grid的单元格,行和列

为使kbmMW SmartBind更加智能,目的之一就是要删除所有重复的绑定代码,使开发者只关注具体的功能需求。通过代码执行SmartBinding非常简单,但为了更容易实现,请看下面的演示:

列绑定:

这里的实现与Smartbinding #2中写的内容相同,重复写,是为了更完整的说明这块功能。

行绑定:

这是新功能,将包含在即将发布的kbmMW版本中。

单击“下一个”和“上一个”将水平滚动显示绑定对象的值。

单元格绑定:

这也是新的功能,如下图:

它只是将Edit绑定到Grid中指定的单元格。

运行时:

Edit5和Edit6的绑定是双向的,因此在Edit中键入内容会更新绑定的单元格,同样在单元格中输入内容会更新Edit的内容。此外,它使用exprToDest表达式进行演示,在更新单元格之前加工数据。

多值表达式绑定

这是一种相当先进的单向绑定,它能够从多个数据源获取数据,并对数据进行各种计算或操作,并在定义的目标中输出结果。

下面用一个简单的方法来说明这个强大的功能,现在有几个Edit,我们想要合并Edit.Text的内容,用一个Label显示:

在运行时它会显示:

上面合并的是字符串,如果我们在Edit8和Edit9中输入一些数字,看下面的结果:

正如你所见,我们在设计时定义了一个简单的计算器。

让我们继续,使用标准TStringGrid制作一个简单的电子表格:

实际绑定代码在这里:

[
{ const:"base", to:StringGrid4.#0.0 },
{ const:"out", to:StringGrid4.#0.1 },
{ const:"post", to:StringGrid4.#0.2 },
{ const:"cotis", to:StringGrid4.#0.3 },
{ const:"salaire improsable", to:StringGrid4.#0.4 },
{ const:"18000", to:StringGrid4.#1.0 },
{ expr:$[StringGrid4.#1.0]*0.05, to:StringGrid4.#1.1 }
{ expr:$[StringGrid4.#1.0]+$[StringGrid4.#1.1], to:StringGrid4.#1.2 }
{ expr:$[StringGrid4.#1.2]*0.09, to:StringGrid4.#1.3 }
{ expr:$[StringGrid4.#1.2]-$[StringGrid4.#1.3], to:StringGrid4.#1.4 }
]

它由一些常量值及组成(在设置数据时只作为绑定临时存在,所以不会影响系统性能),然后再由一些表达式绑定组成,其中数据来自Grid的指定的单元格,结果再放到指定的单元格中。

运行它,这将显示:

现在在指定的单元格输入任意内容,SmartBinding会根据表达式自动更新相关的单元格。

如果输入无效数据,则象下面显示内容:

正如你所见,在设计时定义的绑定,使得我们有了一个高级电子表格。别忘记执行AutoBind

事实上,所有这些绑定都可运行了,与下一个SmartBinding演示应用程序中的其他几个演示一并发布。

如果喜欢这篇文章,请帮我们分享,让其他人知道它!绑定是如此让人快乐!

https://components4developers.blog/2019/06/02/smartbinding-with-kbmmw-3/

SmartBinding与kbmMW#3的更多相关文章

  1. SmartBinding与kbmMW#1

    即将发布的kbmMW,实现了SmartBinding,SmartBinding的设计目标是: 必须易于使用 必须最小化或完全删除锅炉板代码.(你看到这里的趋势了吗?... kbmMW从那时开始就是为了 ...

  2. SmartBinding with kbmMW #4

    前言 在前面写过的文章中,详细介绍过如何将各种的控件与数据源进行绑定(Bind).在这篇文章中,将重点讨论如何绑定TImage和TListView.(同时支持VCL与Firemonkey). 将图形数 ...

  3. SmartBinding与kbmMW#2

    前言 在之前的文章中,我介绍了SmartBinding作为Delphi的一个新的易于使用和智能的绑定框架.介绍了包括绑定对象,列表,常规数据和可视控件,以及如何使用导航器,所有这些都用代码做了演示. ...

  4. kbmMW 5.09测试报告(1)-Scheduler

    这个版本除了增加新的SmartBinding功能,同时提供了大量的功能更新以及bug修正.其中,SmartBinding的介绍,xalion已经第一时间写了初识kbmmw 中的smartbind功能, ...

  5. kbmMW 5.10.10 SmartBinding问题修正

    千呼万唤始出来,最新的kbmMW 5.10.01终于发布了,详情可以看xalion发的更新日志. 我期待的Smartbinding for Listview终于来了,在这一版本中,对SmartBind ...

  6. SmartBinding实现DataSet与ListView的绑定及同步显示

    kbmMW 5.10.10发布了,这个版本解决了我提出的问题,当对DataSet增删记录时,ListView能够同步显示.下面看看具体的实现代码. 为了解决上面的问题,作者为IkbmMWBinding ...

  7. SmartEvent with kbmMW #1

    前言 前面的文章,我写了有关SmartBinding框架方面的内容.SmartBinding的目的是将数据容器绑定到一起,通常情况下,数据容器可以是显示数据或与数据交互的控件(Edit,ListVie ...

  8. kbmMW 5.10.01试用报告

    1.FileClient.SameFile 调用这个方法,当本地文件不存在时,会一直等待.跟踪代码,发现: function TkbmMWCustomFileClient.SameFileEx(Loc ...

  9. SmartBinding工作原理分析

    关于kbmMW SmartBinding,我翻译了作者写的几篇文章,其强大的绑定机制,将可视控制与各种数据源灵活绑定在一起,实现了类似DBEdit数据敏感控件的效果,可以及大的减少我们的代码,实现界面 ...

随机推荐

  1. mysql 截取字符函数substring(param1,param2,param3) 的用法

    substring(paramter1,paramter2,paramter3) 截取字段长度 paramter1  被截取的字段paramter2 从第几位开始截取,负数表示从末尾开始数,的位数开始 ...

  2. 在Android初次的前期学习中的十二个小例子(附案例下载)

    目录(点击标题即可下载): Hello:使用Intent在两个Activity之间切换 Hello2:实现特定的鼠标点击事件功能 Hello3:点击监听事件集中处理 Hello4:登录注册界面布局 H ...

  3. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-4.微信授权一键登录开发之授权URL获取

    笔记 4.微信授权一键登录开发之授权URL获取     简介:获取微信开放平台扫码连url地址 1.增加结果工具类,JsonData;  增加application.properties配置      ...

  4. Elasticsearch 空值过滤

    参考:https://blog.csdn.net/zhang862520682/article/details/80333196 参考:https://www.jianshu.com/p/7a5d70 ...

  5. tomcat中的server.xml元素详解

    附:Tomcat加载顺序 加载类和资源的顺序为: 1./Web-INF/classes 2./Web-INF/lib/*.jar 3.Bootstrap 4.System 5.$CATALINA_HO ...

  6. c++空类为什么占用1个字符

    在C++中空类会占一个字节,这是为了让对象的实例能够相互区别.具体来说,空类同样可以被实例化,并且每个实例在内存中都有独一无二的地址,因此,编译器会给空类隐含加上一个字节,这样空类实例化之后就会拥有独 ...

  7. 文件夹的层级选择< OC实现 >

    类似文件夹的层级选择,可以搜索和创建新文件夹,点击路径标题可以返回对应层级. 界面有点丑,功能还是大概实现了的!! 代码有点多,还是附上地址吧,有兴趣的可以看看哟!!!    https://gith ...

  8. 关于python脚本头部设置#!/usr/bin/python

    今天又是贼几把菜的一天0.0 读别人程序的时候看到在python文件头部设置签名,感觉贼几把酷,自己也试着在文件前段设置了一下. 设置还是蛮简单的,设置过程如图所示. 设置后如图所示: 当然你也可能看 ...

  9. 【计算机视觉】【并行计算与CUDA开发】GPU硬解码---DXVA

    前面介绍利用NVIDIA公司提供的CUVID库进行视频硬解码,下面将介绍利用DXVA进行硬解码. 一.DXVA介绍 DXVA是微软公司专门定制的视频加速规范,是一种接口规范.DXVA规范制定硬件加速解 ...

  10. linux-32bit-内存管理

    一.进程与内存 进程如何使用内存? 毫无疑问所有进程(执行的程序)都必须占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等.不过进程对这些内存的管理方式因内存用途不 ...