- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些用 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/
我会说服我的 friend ,在开发数据库应用程序时,在 Delphi 中使用数据库组件(DB Aware Controls)是迄今为止最好的选择。 这个争论从他很多年前就开始了:直到今天,他仍然相信
在谷歌 Awareness API 指南页面上,提到了上下文类型。 Contextual data includes sensor-derived data such as location (lat
我有一些用 Delphi 编写的业务对象,带有自定义的数据库持久性方案,最终满足了我的需求。太好了。现在是 GUI 实现的时候了。问题就从这里开始了。 如何将我的对象正确绑定(bind)到 GUI?
您如何在Hadoop中定义“机架感知”? 最佳答案 似乎机架感知意味着组件实际上可以区分托管在其上的物理机架服务器。如果您有兴趣,链接会更深入。 https://hadoop.apache.org/d
我很好奇我们许多从事设计或做出设计决策的人是否听说过这个问题。 我知道存在危险的颜色组合,例如绿色 + 红色。这可能是最常见的色盲案例之一。如果红色背景上有绿色文本,反之亦然,有些人将看不到任何内容。
我希望能够在我的 Android 应用程序中查看天气。我实现了它,但它似乎总是在返回条件:[2] 而不是别的,尽管这里已经下了将近一个小时的雨了。 这是它返回的内容: Temp=67.0F/19.44
我正在尝试在多个 session 中使用 Android 感知 API 注册多个位置围栏。但是每次我注册一个新的位置围栏时,它似乎会丢弃我的旧位置围栏并且不再触发它们。 String uniqueId
我认为标题说明了一切......但为了完整起见,这里是完整的问题。 问题 因此,我在 Visual Basic/C#/Anything.net 中有一个包含 Cell 实例的 2 列数组(矩阵或“网格
我想查看全新的 Awareness API。我正在使用 Play Services 9.0.2。文档有 this example : GoogleApiClient client = new Goog
我正在尝试找出一种在线算法,用于“时间感知”指数移动平均线,在不同时间进行采样。通过“时间感知”,我的意思是“给予在一天中相似时间采样的数据更多的权重”,但是(a)我将给出更精确的定义,并且(b)这只
在Struts2拦截器包中,我们可以看到很多XXXAware接口(interface),比如ApplicationAware、CookieAware等。 在Spring框架中,ApplicationC
我正在与 Java 团队一起使用 JavaFX WebView 开发 HTML+CSS+Javascript渲染器。我也想在普通浏览器中使用相同的 HTML+CSS+Javascript,但我希望在样
本文分享自华为云社区《有感知的 Aware Spring Bean》,作者:陈皮的JavaLib。 有感知能力的 Spring Bean 正常情况下,Spring 中的 Bean 对 Spring 是
我有一个带有 openocd 和 arm-none-eabi-gdb 的设置,我正在尝试调试 FreeRTOS fw。 我用以下命令启动 openocd: openocd -f /usr/local/
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
遵循 official documentation 中的指南,我尝试使用以下语句将 Awareness API 添加为我的应用程序的依赖项: compile "com.google.android.g
我在手机上使用较低版本 (9.4.0) 的相同代码,但出于某种原因它不能在 RPi3 上运行?我的构建.gradle compile 'com.google.android.gms:play-serv
好吧,我正在测试如何编写一个 C++ 应用程序,它实际上可以读取(和更改)文本文件,同时遵守用于文本的编码。我希望(对于其他 API)将所有读取的文本显式转换为 UTF-8 以供内部使用。与文件中的实
我正在使用 Genesis LifeStyle Pro 子主题。网址:https://www.test.rainerklar.de/blog-fuer-verjuengung-und-gesundhe
我有一个关于在 C++ 中向 std::map 插入内容的问题。 这就是我的代码: stringutils.hh: ... unsigned long hashSDBM(char *strToHa
我是一名优秀的程序员,十分优秀!