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

Jer*_*dge 2 delphi readonly delphi-7 tcollection custom-component

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

Rem*_*eau 5

您可以覆盖Assign()Notify()TCollection有关添加和删除的通知方法,也可以覆盖关于重新编制索引的通知SetIndex()方法TCollectionItem。对于添加/删除,抛出异常以拒绝该操作(在添加的情况下,您将必须释放添加的新项目)。对于重新编制索引,只需不执行任何操作即可退出。

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

  • 那是在查看VCL源代码时很方便的。 (3认同)