问题标签 [townedcollection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4820 浏览

delphi - 在 Delphi 中使用 TOwnedCollection 后代

我正在尝试使用集合属性创建自定义组件。但是,如果我尝试在设计时通过单击对象检查器中的“...”按钮来打开集合编辑器,则不会发生任何事情。我错过了什么?

这是我的 TCollection 后代:

和项目:

0 投票
1 回答
502 浏览

delphi - 将 TCollection 与已定义的类一起使用

(注意:这与我的最后一个问题有些相关)。

我是在 Delphi 中使用 TCollection 的新手,并且仍在思考处理一对多类/属性项关系的各种方法。探索 TCollection 和 TCollectionItem,我遇到了几个问题:

1) 是否可以将 TCollection 或 TOwnedCollection 用于 TForm 属性?(还没有尝试过,但我提前想知道它的内置对象检查器功能是否会导致问题)。

2)如果有人想要使用一些已经定义的其他地方的类,它不能直接从 TCollectionItem 继承,与 TCollection(即“作为”一种“TCollectionItem”),可以实现吗?如果是这样,那是否可以通过接口完成?...或者最好的方法是什么?

0 投票
1 回答
777 浏览

delphi - 具有可编辑列的 TCollection PropertyEditor

对于我自己的 TCollection 后代,我想扩展集合属性编辑器。我想查看更多关于我的 TCollectionItem 的其他属性的列。我很幸运,因为这很容易。我唯一想做的就是重写这三个方法

检索列数、列标题和集合项的列值。

现在我想编辑属性单元格。在这里停下来很有趣,我自己编写了一个完整的集合编辑器(可能作为 TCollectionEditor 在单元 ColnEdit.pas 中的副本或后代)?

我希望有一些更简单的东西,但我对构建复杂 TCollectionEditor 的示例很感兴趣。

乔海因茨 Z.

0 投票
1 回答
701 浏览

delphi - 添加后delphi TCollection计数不增加

我有类型

  • TNotifyReply = 类(TCollectionItem)
  • TNotifyReplylist = 类(TOwnedCollection)

NotifyReplylist := TNotifyReplylist.Create(self, TNotifyReply);

调用此函数(任意次数)后,计数仍为零

知道这里发生了什么吗?

0 投票
2 回答
2678 浏览

delphi - 如何在设计时调用组件的属性编辑器

我创建了一个从 TCustomPanel 派生的组件。在那个面板上,我有一个从 TOwnedCollection 派生的类的已发布属性。一切正常,在对象检查器中单击该属性的省略号会打开默认集合编辑器,我可以在其中管理列表中的 TCollectionItems。

我还希望能够在设计时双击面板并默认打开集合编辑器。我首先创建了一个派生自 TDefaultEditor 的类并注册它。

这似乎在正确的时间运行,但我被困在当时如何启动集合的属性编辑器。

任何解决方案或不同的方法将不胜感激。

0 投票
1 回答
107 浏览

c++builder - 如何将 TCollectionItem 的 2 次派生类添加到 TOwnedCollection?

我想使用 TOwnedCollection / TCollectionItem 实现一个集合或列表。我需要一个具有多态性的类的持久列表(从 FileStream 加载和创建)。

到目前为止,这是我的(部分)代码,但我没有成功创建派生类 TGenerator 而不是其父类 TPowerComponent 并将其添加到集合中。

要添加 TGenerator 而不是 TPowerComponent,我使用:

TCollectionItem 子项的创建自动将自身添加到 TCollection

这里的问题是我们无法将创建项目的过程与将其添加到集合中分开。

例如,当我需要另一个可以包含第一个集合列表的某些项目的列表时,SelectedComponents 可以包含网络集合的一个或一些项目,而无需重新创建它们。

这可以通过

但我无法使用 FileStream / 持久列表来写入/读取它们。我需要将它们放在 TCollection 中,但不重新创建它们。

如何?