I would just like to add my voice to the many others here who have expressed a desire for a feature to control the Tab-order of the elements on forms.
I understand the Form "natural ordering" system quite well; and I understand how to use the "Goto" command. I am already using it a fair bit in my applications, actually.
However, the "Natural Ordering" is very restrictive because it necessitates wasting space on a form or adding extra tab-views. If you want certain data to be entered in a top-to-bottom order, but the elements themselves are not very wide (i.e. I could make a form with a width of 600 and easily fit 2 or three columns of data, but the "natural ordering" system means that I can't do this - I need to make one LONG column, or seperate the data over several tab-views. I understand that the data could be manipulated in a table format, but the situation I'm talking about is one in which you desire multiple columns of elements on parts of the form, but a few "wide" elements at the top or bottom. I'm posting a screenshot example in a moment at:
http://warpedspace.netfirms.com/sesameform1.htmlNow, as for the "Goto" command: Its great, but ALSO very restrictive, as the "On Element Exit" code is called anytime a form element "loses focus"... This can be due to the TAB key being pressed, the ENTER key being pressed, or a Mouse-Button click. A simple "Goto" command overrides all of the above actions and moves to the appropriate element. This can be frustrating and confusing to the end-user. If there was a "Last Key Pressed" SBasic command that captured keyboard strokes, I could at least do an "If" statement in the "On Element Exit" code like:
IF (@LastKeyboardKeyPressed() = TAB(1))
{
Goto SomeLayoutElement
}
and this would achieve the desired functionality...
But really, would putting a "Tab Order" into the Property viewer & editor be that hard? You could encode the tab order into the form data that saves all of the layout element formatting information... and everytime the user pressed the TAB or ENTER key, have the form query its elements and focus on the one with the next tab-order value (or save the tab order as a sorted list of elements so that its "pre-calculated" when the form/application starts; and avoid the slow-downs associated with dynamically querying the tab order, although dynamic tab-ordering via SBasic commands would be a fun little bonus feature - but not ANYWHERE near as critical as a straightforward Tab-ordering system for the forms).
Thanks, take care,
--Noel
noel_wade@hotmail.com