Hi Thanks to you all for your help and the tutorial on interfaces which was very handy as I'm still wrapping my mind around them (apart from this problem).
I decided to use Kyley's RTTI interrogation technique - I understand what it's doing whereas my OO development is still digesting interfaces. In due course I may go the interface way, but for the moment, the RTTI method will suffice. I decided to check the functions worked as I expected by creating my own object (rather than using Form/Panel, Font background ...) I defined a minimal object with get/set properties and tried to use it (see skeletal code below). Compiled fine but gave a "Doesn't have a Colour Property" message, which means that IsPublishedProp is returning nil. After wandering around the help system on RTTI I went home and the answer (well a solution anyway) came while I was driving. I was pondering on why the system-defined objects were fine and mine wasn't. Answer - they're all derived from TComponent. Even though the property is public and published, for "IsPublishedProp()" to work, the class (apparently) has to be a descendent of TComponent, TObject won't work. So now I have a method I can use for both VCL objects and those I create. I greatly appreciate your help Thank you all Giovanni CompSci - Massey Uni ========================================================== // TMyColourSetTester = class(TObject) <= FAILS AT RUNTIME TMyColourSetTester = class(TComponent) <= WORKS FINE private MyColour : TColor; function GetCol : TColor; procedure SetCol (value : TColor); public constructor create; // just calls inherited create published property color : TColor read GetCol write SetCol; end; procedure SetObjectColour (name : string; AObject : TObject; newColour : TColor); var result : boolean; propinfo : PPropInfo; classTypeInfo : PTypeInfo; begin result := IsPublishedProp(AObject,'color'); If result then SetOrdProp(AObject,'Color',newColour) else showmessage(name+' doesn''t have a Color property'); end; var Coltester : TMyColourSetTester; ColTester:= TMyColourSetTester.create; ColTester.color:= clYellow; // Make sure it goes setObjectColour('ColTester', ColTester, clAqua); ========================================================== --------------------------------------------------------------------------- New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED] Website: http://www.delphi.org.nz To UnSub, send email to: [EMAIL PROTECTED] with body of "unsubscribe delphi" Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/