问题标签 [tcollection]

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 回答
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 投票
3 回答
5402 浏览

delphi - delphi 7:如何找到对象集合的项目?

如何按名称查找并在对象集合中获取项目?

我想编辑产品名称的数量。

我怎样才能做到这一点?谢谢你

0 投票
1 回答
667 浏览

arrays - 从 Dll 返回 TCollection 或对象数组

我试图从 dll 函数返回我自己的对象(从 TCollection 派生)。我使用了 FastMemoryManager,但没有成功......所以我尝试返回一些对象的动态数组。
dll函数中当然设置的数组的长度。它工作得很好,但分配的内存没有被释放。
(我用 Windows tarsk manager 测量)。有没有可能如何释放动态数组?调用dll函数的过程在线程中,最后我如下:

如果我使用而不是Setlength(MyObjectArray, 0) 和 MyObjectArray := nil,
则会引发 FreeAndNil(MyObjectArray) 异常。

有什么建议吗?

0 投票
3 回答
691 浏览

delphi - 是否可以?TCollection 后代实现存储任意内容的 TPanel 容器

我是 Delphi 组件开发的新手,因此想知道,是否有可能实现我的任务。

我需要创建一个基于 TScrollBox 的可视组件(用户控件),它将代表一堆 TPanel,所有这些面板都将在该 TScrollBox 内对齐为“顶部”,并且可以具有不同的高度。它必须充当 TCollection(添加、删除、重新排序),并且必须允许用户在设计时将其他控件添加到这些面板中。

我为组件创建了这些类:

该组件在设计时工作正常,我可以在堆栈中添加-删除面板,当我在任何面板上放置一些控件(例如 TCheckbox)时,它显示为“由该面板拥有”:例如我无法拖动此复选框面板外。

但此复选框不存储在 DFM 文件中,也不显示在“结构”窗口中。

我想TPanel的内容必须有一些手动序列化-反序列化,但我不知道该怎么做。在 Internet 上找不到任何示例。请给我一些指导,如果这样的实施是可能的。

加法

这是在网格中添加 3 个面板后我的 DFM 文件片段的样子:

如您所见,所有项目都是空的,但我将一个复选框和单选按钮放入项目#3。

0 投票
2 回答
316 浏览

c++ - 递归读取 TCollection

我对递归非常糟糕,以前从未使用过它。我知道它的理论.. 没有帮助:)) 对于我的问题,我有一个包含 TCollection 和 TCollectionItem 等的 TCollection 结构。我必须编写一个递归函数来读取我所有的 TCollectionItems。这是图形视图:

TCollection->TCollectionItem(s)->TCollection->TCollectionItem(s)

TCollection 可以有 1 个甚至 2,3 个 TCollection 在他下面,或者没有。

这里还有几个例子:

TCollection->TCollectionItem

TCollection->TCollectionItem->TCollection->TCollectionItem->TCollection->TCollectionItem

ETC ..

如果我描述的问题不好,请告诉我,我可能做了..请问是否有不清楚的地方:)

感谢您的支持!

0 投票
1 回答
434 浏览

delphi - Getting the index # of a TCollection Item when added to a TCollection

I know that when I add a collection item to a collection, the index is zero-based. I would like to make it one-based and show the value in a property called Id. Can someone tell me how I can go about this in code?

0 投票
1 回答
289 浏览

delphi - 使用 Tcollection 在 dephi 中保存 vcl 对象引用

我正在使用 delphi 2009 和 VCL 组件。我创建了一个名为 TStreets 的集合,该集合由 TStreet 项组成,它只有两个私有字段。现在我需要向 Tstreet 类添加另一个字段/属性来跟踪(通过使用引用)类 TMyObject 的其他对象。

一个例子:假设 TStreet 集合包含五个元素和十个对象 (TMyObject) 在我的应用程序运行时存在。TMyObject 的每个对象只能属于一个 TStreet,因此我需要为每个 TStreet 保存对象的所有引用,然后能够将一个或多个对象引用从一个 TStreet 移动到另一个。我应该在保存对象引用的 TStreet 下创建另一个集合吗?

走的路是否正确?

0 投票
1 回答
589 浏览

delphi - Delphi TCollection - 可以防止在运行时更改项目吗?

使用 delphi 7,我有一组 TCollection/TCollectionItem 后代。它们旨在仅在设计时设置,绝不能在运行时进行修改。我怎样才能做到这一点?设计时应始终允许进行任何需要的编辑,但在运行时,我不希望能够添加、删除或重新索引集合中的任何项目。每个项目的属性,是的,我确实希望启用它们。但是更改实际项目只能在设计时进行。