2

Delphi 7 を使用して、子孫の TCollection/TCollectionItem セットがあります。これらは設計時のみに設定することを意図しており、実行時に変更しないでください。これどうやってするの?設計時は常に必要な編集を許可する必要がありますが、実行時は、コレクション内のアイテムを追加、削除、または再インデックス化できるようにしたくありません。これらの各アイテムのプロパティ、はい、有効にしたいです。ただし、実際のアイテムを変更するのは設計時のみです。

4

1 に答える 1

5

Assign()のおよびNotify()メソッドをオーバーライドしてTCollection追加と削除を通知し、 のSetIndex()メソッドをオーバーライドしてTCollectionItemインデックスの再作成を通知できます。追加/削除の場合は、例外をスローして操作を拒否します (追加の場合、追加された新しい項目を解放する必要があります)。再インデックスの場合は、何もせずに終了します。

実行時と設計時を区別するには、TCollectionが見つかるまで (他のクラスの内部にネストされている場合)の所有者チェーンを調べてから、フラグのプロパティをTComponent確認できます。ComponentStatecsDesigning

于 2011-11-10T01:53:53.570 に答える