[SOLVED] Code to execute next Tab
[SOLVED] Code to execute next Tab
Is there code I could put at the end of a macro that will execute the next Tab position?
Last edited by RoryOF on Sat May 30, 2015 6:20 pm, edited 2 times in total.
Reason: Added green tick [RoryOF, Moderator]
Reason: Added green tick [RoryOF, Moderator]
Libre Office 4.2.2.1 on OS X 10.9.3
-
- Volunteer
- Posts: 828
- Joined: Fri Nov 30, 2007 10:58 am
- Location: Scotland
Re: Code to execute next Tab
Nothing simple as it would probably require the macro to be pre-programmed with an array of form controls listed in tab order.
When this issue has been resolved, it would help other users of the forum if you add the word - [Solved] - to the Subject line of your 1st post (edit button top right).
AOOo 4.1.5 & LO 6 on MS Windows 10 MySQL and HSQLDB
AOOo 4.1.5 & LO 6 on MS Windows 10 MySQL and HSQLDB
Re: Code to execute next Tab
objForm.getControlModels() returns an array of control models in tab order but you have to weed out the labels, hidden controls and may be some other controls.Arineckaig wrote:Nothing simple as it would probably require the macro to be pre-programmed with an array of form controls listed in tab order.
Code: Select all
Sub test_getTabControls()
f = thiscomponent.drawpage.forms.getbyindex(0)
a() = getTabControls(f)
dim s$
for each m in a()
s = s & m.Name & Chr(10)
next
msgbox s
End Sub
Function getTabControls(f)
REM return array of controls that can be tabbed into
Dim a()
for each m in f.getControlModels()
if m.PropertySetInfo.hasPropertyByName("Tabstop") then
if isEmpty(m.Tabstop) or m.Tabstop = True then
if m.Enabled and m.EnableVisible then bas_PushArray(a(), m)
endif
endif
next
getTabControls = a()
End Function
'very simple routine appending some element to an array which can be undimensioned (LBound > UBound)
Sub bas_PushArray(xArray(),vNextElement)
Dim iUB%,iLB%
iLB = lBound(xArray())
iUB = uBound(xArray())
If iLB > iUB then
iUB = iLB
redim xArray(iLB To iUB)
else
iUB = iUB +1
redim preserve xArray(iLB To iUB)
endif
xArray(iUB) = vNextElement
End Sub
Please, edit this topic's initial post and add "[Solved]" to the subject line if your problem has been solved.
Ubuntu 18.04 with LibreOffice 6.0, latest OpenOffice and LibreOffice
Ubuntu 18.04 with LibreOffice 6.0, latest OpenOffice and LibreOffice