Q: accessing published properties of a derived class using a base class pointer

I would like to alter the TControl::OnMouseMove event of a control's
parent at run-time.

If I know at design time (as I do in this example) who the parent is, I
can access it directly as such:

 TestTabSheet->OnMouseMove = OtherMouseMove;

If I don't know the parent's name, but I do know it's type, I can cast
the Parent property (of type TWinControl*) to the derived type.  Since
the derived class (TTabSheet in this case) publishes TControl's
protected property, OnMouseMove, I can then access it as such:

 TTabSheet *MyTabSheet;
 MyTabSheet = dynamic_cast<TTabSheet *>(TestListBox->Parent);
 MyTabSheet->OnMouseMove = OtherMouseMove;

What if I don't know the parent's type?  I would like to access the
protected property TControl::OnMouseMove without knowing what derived
class Parent actually points to.  Neither TControl nor TWinControl
publish the property, since they are virtual classes.  However, most if
not all children of TWinControl publish the property, allowing me to
change it if only I know the type.  Is there a good way to do this without
knowing at designtime the parent's type?

I posted this to borland.public.cppbuilder.vcl.  Should this be
directed to borland.public.cppbuiler.language instead as an RTTI issue?