First set AutoDeclaration to Yes on all your controls.
Second override the init method and provide it an array of control IDs in the order that you want to tab.
void init()
{
Array tabOrder = new Array(Types::Integer);
;
super();
tabOrder.value(1, Control1.id());
tabOrder.value(2, Control2.id());
tabOrder.value(3, Control3.id());
tabOrder.value(4, Control4.id());
tabOrder.value(5, Control5.id());
tabOrder.value(6, Control6.id());
tabOrder.value(7, Control7.id());
tabOrder.value(8, Control8.id());
tabOrder.value(9, Control9.id());
tabOrder.value(10, Control10.id());
tabOrder.value(11, Control11.id());
tabOrder.value(12, Control12.id());
element.tabOrder(tabOrder);
}