gpt4 book ai didi

delphi - "Object Aware"图形用户界面控件

转载 作者:行者123 更新时间:2023-12-03 14:47:41 26 4
gpt4 key购买 nike

我有一些用 Delphi 编写的业务对象,带有自定义的数据库持久性方案,最终满足了我的需求。太好了。现在是 GUI 实现的时候了。问题就从这里开始了。

如何将我的对象正确绑定(bind)到 GUI?

我无法使用数据感知控件,因为我将所有数据访问组件隔离到 ORM 层中,因此我开始使用 RTTI 单元编写一些“对象感知”控件(我正在使用 Delphi 2010),但我有感觉自己走错路了...

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

最佳答案

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

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

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

最后一种方法是让 ORM 创建表单。

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

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

关于delphi - "Object Aware"图形用户界面控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5159561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com