LibreOffice Base;从主窗体到子窗体的Tab顺序

时间:2014-12-04 09:21:45

标签: forms libreoffice libreoffice-base

我有一个包含mainform和子表单的表单。当用户位于最接近子表单的文本框中,并且用户按Tab键时,它必须跳转到子表单中,但它不会。它跳转到子窗体后的文本框。当用户位于主窗体的最后一个文本框中并且用户按下选项卡时,它会跳转到子窗体中。

如何确保用户在文本框中跳转到子窗体时,该子窗体是最接近子窗体的子窗体?

示例图片:

example image

2 个答案:

答案 0 :(得分:1)

UI中的Tab键顺序不考虑子表单上的控件,但这可以通过编程方式完成。在When losing focus Event上为最接近子窗体上的网格/表格控件的控件设置LO基本宏。这是一个控件,当你选择它时,你想要去网格。对于该事件,运行这样的宏,其中grid1是表/网格控件:

root_doc = ThisComponent
form_container = root_doc.Drawpage.Forms
form_ctrlr = root_doc.getCurrentController()
sub_frm = form_container.getByName("Sub_Form")
tab_target = sub_frm.getByName("grid1")

form_ctrlr.getControl(tab_target).setFocus()

离开grid1时,您还需要设置一个类似的宏,因为它位于子表单中,不会在Tab键顺序中计算。

帽子提示probe1@ooForum

答案 1 :(得分:1)

我必须再添加一行才能使代码生效。见代码。

Dim root_doc As Object
Dim form_container, form_ctrlr As Object
Dim main_frm, sub_frm, sub_frm_grd 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")
sub_frm_grd = sub_frm.getByName("SubForm_Grid")
'set focus to grid control
form_ctrlr.getControl(sub_frm_grd).setFocus()