我有一个包含mainform和子表单的表单。当用户位于最接近子表单的文本框中,并且用户按Tab键时,它必须跳转到子表单中,但它不会。它跳转到子窗体后的文本框。当用户位于主窗体的最后一个文本框中并且用户按下选项卡时,它会跳转到子窗体中。
如何确保用户在文本框中跳转到子窗体时,该子窗体是最接近子窗体的子窗体?
示例图片:
答案 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()