问答LibreOffice Base; Tab order from mainform to subform几乎可以解决我遇到的问题,但不能完全解决。
我有一张桌子mytable
(id, name, textfield
)。我以表格布局(表格控件)的形式显示id
和name
。我已经在同一表格的表textfield
中添加了一个带有文本框控件的子窗体(原因是我想用换行符输入文本,同时能够在主表中快速浏览记录)。这是设计视图中的外观:
我已根据上面链接的两个答案添加了此基本宏:
Sub Main
Dim root_doc As Object
Dim form_container, form_ctrlr As Object
Dim main_frm, sub_frm, tab_target As Object
root_doc = ThisComponent
form_container = root_doc.Drawpage.Forms
form_ctrlr = root_doc.getCurrentController()
main_frm = form_container.getByName("MainForm")
sub_frm = main_frm.getByName("SubForm")
tab_target = sub_frm.getByName("TextField")
form_ctrlr.getControl(tab_target).setFocus()
End Sub
现在,如果我将宏添加到When losing focus
列的事件name
上,则在按Tab时确实会集中在文本框上,而在下一行上。
如果我将宏添加到On key press
列的事件name
中,则在按下例如Space
,但是Tab
或Enter
仅将我带到主表单的下一行。
有没有办法使它与Tab
一起使用?
答案 0 :(得分:0)
从ask.libreoffice.org的答案中解决此问题的选项:
只需使用标准Ctrl + Tab
来切换焦点。
将宏分配给自定义按键组合并使用它。并非所有组合都有效,我选择了Shft + Enter
。
和宏(由用户Ratslinger提供):
Sub Main
Dim oForm, oCtrlr, oField As Object
oForm = ThisComponent.Drawpage.Forms.getByName("MainForm")
oCtrlr = ThisComponent.getCurrentController()
oField = main_frm.getByName("TextField")
oCtrlr.getControl(oField).setFocus()
End Sub