>The first item is AddObject():
Oops... yup.
I think the reason this doesn't work is because EMPTY is not a traditional FoxPro object. There are a few oddities of what you can do and can't do with it. For example you can't inherit from EMPTY() (which would have been great). I suspect something int he AddObject() logic depends on base class features that just aren't available on Empty and that's why it doesn't work.
.AddObject() is really meant for adding components into the control tree. If you want to add non-visual objects to a form (or other class for that matter) I'd argue that .AddProperty() is the better way to do that anyway.