>Thanks for clearing up the my misconception and the code.
Actually, I've long ago posted a builder here in the files )http://www.levelextreme.com/wconnect/wc.dll?FournierTransformation~?2,54,Forum=5,28,1056) which will rearrange the instantiation order your objects in the tab order, but that's still unreliable - the next time you add or remove an object, or change the tab order, you'll have to reapply it.
A far easier way around this would be to return -1 from an object's Valid(), and that would set focus to the previous (in tab order) object.
Another way, more difficult, would be to have a form-level array property which would hold references to all objects which can receive focus, ordered by their tab orders. It goes several levels deep if needed, and I'm building this array in form's init. The array has two columns - one is the object reference, and the other is a sortable key for tab order. The sortable key is actually a four-digit hex representation of the tab order, and for members of containers (i.e. containers, pages, button groups, grids etc) it's the parent tab order plus the tab order within the parent, (re)cursing as needed. Each object also has a property telling it where in this array is its reference, so it can know which member to jump to, something like
thisform.tabf[this.gtaborder-1, 1].setfocus
Of course, doing this for one form would be an overkill, I've done it at the framework level.