>try setting tab order so your custom object has the lowest order (for example 1.)
Tab order has nothing to do with the order of instantiation, i.e. these two are completely independent. They coincide if and only if zOrder and tab order are not touched during editing.
The instantiation order can be manipulated by setting the z-order in editing, but that also means that it can be changed later when everyone forgot that this particular form depends on it. It's unreliable, therefore, and so it's much wiser to write code so that it doesn't depend on the instantiation order.
Form's .init is the place where we can manipulate objects already on the form, and add some more if we really want to. The objects we may need in advance can be added in form's load, or even better, be members of the form's parent class.