TCollectionItemから派生したクラス(A)のメンバに
TCollectionから派生したクラス(B)を持たせたいのですが、
このA上のBを設定する際にオブジェクトインスペクタで「・・・」
ボタンを押しても通常のCollectionのプロパティエディタが
表示されないのですが、何が問題か分かりません。
どなたかご教授願います。
イメージとしてはTTableのFieldDefsの中の
ChildDef(TFieldDef)を設定する際の「・・・」ボタンを
押したときのような感じを実現したいのですが。
Sample
TMyCollectionB = class(TCollectionItem)
TMyCollectionsB = class(TCollection)
public
property Items[Index: Integer]: TMyCollectionB read 〜
end;
TMyCollectionA = class(TCollectionItem)
private
FB: TMyCollectionsB;
published
property B: TMyCollectionsB read 〜
end;
TMyCollectionsA = class(TCollection)
public
property Items[Index: Integer]: TMyCollectionA read GetItem write SetItem; default;
end;
TMyCompo = class(T〜)
private
FA: TMyCollectionsA;
published
A: TMyCollectionsA read 〜
end;
細かいことは覚えていないのでhttp://madia.world.coocan.jp/Delphi/old.htm
の
開発者支援コンポーネントキット
のImageViewでコレクションを使っていたと思うので参考にしてみて下さい。
※全然、ちがったらごめんさい。
ちょっとちがってました。
CollectionItemから派生したクラスにさらにCollection型のプロパティが乗っているということなんです。
TTableのVCLソースを見てみてもさっぱり分かりません。
どなたか同じようなことを実現されている方いないでしょうか?
自己レス
解決しました。
TCollectionから派生したクラスの中でGetOwnerメソッドを記述していなかった
ことが原因でした。
ツイート | ![]() |