views:

1988

answers:

2

I am developing various components, and regularly run into the need to have a property that has a "one-to-many" relationship, component-to-property-member. The components are often visual components, but not always, and sometimes need to be registered with the IDE (i.e. use the Property Inspector), but not always. I find myself unsure of which route to take when setting up these properties -- using an array property, a TList, a TStringList, a TCollection, or something else altogether (perhaps a new class that inherits from one of those).

What are the "best practices" / guidelines for which to use when / where?

+10  A: 

If they are properties, you can descend from TCollection, and then the IDE and Object Inspector will automatically provide support for them via the TCollection Property editor.

Nick Hodges
Nick, for OI support, isnt TOwnedCollection?
Cesar Romero
No, TCollection is just fine --
Nick Hodges
+1  A: 

TObjectList and TInterfaceList / IInterfaceList are my favorites. And there is TThreadList for thread-safe lists. All of them are available in Delphi 6 (or even before).

mjustin
Interesting -- thanks!
Jamo