嵌套在 Delphi 框架中的私有组件字段

Posted

技术标签:

【中文标题】嵌套在 Delphi 框架中的私有组件字段【英文标题】:Private component fields nested in Delphi frames 【发布时间】:2017-01-23 04:53:26 【问题描述】:

这是 Delphi 组件和框架的快速比较,最后是我的问题。

Delphi组件优势

它们封装得很好。使用组件的软件只能访问组件的publicpublished 属性。 它们的所有内部事件处理程序在父窗体的设计时都可用。

Delphi组件缺点

他们需要安装一些包 包在多个应用程序之间共享,即使其中的组件是特定于应用程序的 Delphi 框架

优点

它们可以像组件一样放置在表单上 他们的published属性也可以在表单中调整 它们仅在应用内,不适用于它们不属于的其他应用 它们很快就可用。无需安装。

Delphi 框架缺点

它们的所有内部组件都可以直接在父窗体中使用。如果我从 published 部分移动组件,框架设计器中的设计时自定义也会被破坏。 如果我在一个框架中覆盖Resize 方法,所有的安排都只在运行时可用。在设计时没有安排。 如果我引入一个新的 published 属性,它在对象检查器中不可用。

我想要的东西是一种共生的东西:

良好的封装。父表单中没有任何内部组件可用,但它们的所有内部组件在运行时或设计时都具有完整的功能。 快速可用性。无需安装。 仅限应用内。不得与其他应用共享。 可以在表格中调整其发布的属性 所有方法覆盖(尤其是 Resize 方法)在设计时都可用。

你能推荐一个满足这些要求的东西吗?或者可能是一些令人惊讶的方法来处理我不知道的框架?

它不一定是框架或组件。如果其他一些 VCL 课程满足这些要求,我将不胜感激。

【问题讨论】:

我总是在运行时创建帧。然后,您始终可以放心,没有人会修改框架的内部组件。但是,如果您希望它在设计时可用-我只看到自定义组件实现,它将存储要构造的框架的类名,并且通过该类它还可以迭代属性..-但这是来自科学的东西- fi电影,太复杂了。 我不明白为什么组件的第二个缺点被认为是一个缺点。 这读起来像是一个功能请求而不是一个问题。你知道你要的东西不存在。 @David Heffernan:抱歉,我不确定。几年前,在我最近的“功能请求”中,人们建议我尝试当时我不知道的框架。 您想要引入可以在检查器中编辑的新属性,这意味着您必须使用设计时包提供的组件。而已。没有别的了。 【参考方案1】:

如果其属性必须在设计器中可编辑,则该对象必须是 TComponent 的后代。 TFrame 实际上是 TComponent 的后代。

不幸的是,对象检查器似乎只使用设计时包中的结构信息。因此,您必须为自定义发布的属性编译设计时包,以在对象检查器中显示。 但这符合您对快速可用性的要求。

【讨论】:

In-app only 要求可以通过使用 Package Magician 来满足(谷歌一下),它允许使用项目的激活和停用。

以上是关于嵌套在 Delphi 框架中的私有组件字段的主要内容,如果未能解决你的问题,请参考以下文章

delphi中的SQL语句

React Hook Form:提交带有嵌套组件的表单或提取嵌套组件的字段提交

更新嵌套 Angular 2 组件中的数字字段值

如何使用嵌套路由和私有路由组件在 react.js 中正确构建路由?

可以将组件及其事件处理程序复制到新窗体或框架的 Delphi 6 实用程序或 IDE 专家?

如何为 onclick 事件选择 Delphi 框架而不是其组件?