如何正确地将我的对象绑定到GUI?
我无法使用Data Aware控件,因为我将所有数据访问组件分离到ORM层,所以我开始使用RTTI单元编写一些“Object Aware”控件(我正在使用Delphi 2010),但我感觉我’我走错了路……
关于如何仅使用VCL控件解决此问题的一些想法?
解决方法
例如,参见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实现细节分开.