加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – “对象感知”GUI控件

发布时间:2020-12-15 04:05:16 所属栏目:大数据 来源:网络整理
导读:我有一些用Delphi编写的业务对象,它有一个自定义的数据库持久性方案,最终可以满足我的需求.太好了.现在是GUI实现的时候了.这里开始出现问题. 如何正确地将我的对象绑定到GUI? 我无法使用Data Aware控件,因为我将所有数据访问组件分离到ORM层,所以我开始使用
我有一些用Delphi编写的业务对象,它有一个自定义的数据库持久性方案,最终可以满足我的需求.太好了.现在是GUI实现的时候了.这里开始出现问题.

如何正确地将我的对象绑定到GUI?

我无法使用Data Aware控件,因为我将所有数据访问组件分离到ORM层,所以我开始使用RTTI单元编写一些“Object Aware”控件(我正在使用Delphi 2010),但我感觉我’我走错了路……

关于如何仅使用VCL控件解决此问题的一些想法?

解决方法

您有几种将ORM与用户界面链接的模式.

例如,参见Model GUI Mediator模式.简而言之,您编写了一个观察者,它将ORM内容反映到UI组件中,反之亦然.这已经在tiOpf framework for Delphi中实现(此链接有视频).

另一种方法是在运行时映射数据:您像往常一样设计表单,然后在OnShow事件中填充内容,然后“保存”或“确定”按钮将验证然后将内容保存到ORM记录中.这就是在main Sample application of our framework中完成的.在这个简单的示例中很容易编码,但如果你有很多字段和验证操作,可能会导致意大利面条代码.

最后一种方法是让你的ORM创建表单.

在我们的框架中,您可以在专用结构中定义有关每个表的一些UI属性.然后是你的ORM对象的a single unit will create a form with all editable fields.其他记录的链接将显示为组合框,布尔值显示为复选框,设置为radioboxes等.然后,处理过滤(例如,从左侧或右侧的空间修剪文本字段)和验证(例如,确保字段值是唯一的或有效的IP地址),处理not in the UI part,but in the business logic itself,i.e. the ORM.

恕我直言,必须保持真正的多层架构.也就是说,UI必须主要依赖于业务逻辑.例如,数据验证必须是ORM的一部分,而不是UI的一部分.例如,如果您决定将Web客户端添加到Delphi客户端应用程序,则不必再次对验证进行编码:对于两个客户端而言,它们将与UI实现细节分开.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读