2

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

4

1 回答 1

5

您可以重写要通知添加和删除的 和 方法,并重写Assign()Notify()通知重新索引的方法。对于添加/删除,抛出异常以拒绝操作(在添加的情况下,您必须释放添加的新项目)。对于重新索引,只需退出而不做任何事情。TCollectionSetIndex()TCollectionItem

要区分运行时和设计时,请遍历 Owner 链TCollection(如果它嵌套在其他类中),直到找到 a TComponent,然后您可以检查其标志的ComponentState属性。csDesigning

于 2011-11-10T01:53:53.570 回答