Forms 图书馆办公基地;从主窗体到子窗体的选项卡顺序

Forms 图书馆办公基地;从主窗体到子窗体的选项卡顺序,forms,libreoffice,libreoffice-base,Forms,Libreoffice,Libreoffice Base,我有一个带有主窗体和子窗体的窗体。当用户位于文本框中(离子窗体最近),并且用户按Tab键时,它必须跳入子窗体,但不会跳入。它跳转到子窗体后面的文本框。当用户位于mainform的最后一个文本框中并按tab键时,它会跳入子窗体 如何确保用户在文本框中时跳转到子窗体,该文本框是离子窗体最近的文本框 示例图像: UI中的选项卡顺序不考虑子窗体上的控件,但这可以通过编程实现。对于最接近子窗体上网格/表格控件的控件,在失去焦点时在事件上设置一个LO Basic宏。这是一个控件,当您通过它时,您希望转到网格

我有一个带有主窗体和子窗体的窗体。当用户位于文本框中(离子窗体最近),并且用户按Tab键时,它必须跳入子窗体,但不会跳入。它跳转到子窗体后面的文本框。当用户位于mainform的最后一个文本框中并按tab键时,它会跳入子窗体

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

示例图像:


UI中的选项卡顺序不考虑子窗体上的控件,但这可以通过编程实现。对于最接近子窗体上网格/表格控件的控件,在失去焦点时在
事件上设置一个LO Basic宏。这是一个控件,当您通过它时,您希望转到网格。对于该事件,运行如下宏,其中
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
as保留为时,您还需要设置一个类似的宏,因为它位于子窗体中,在选项卡顺序中不考虑它


帽子提示。

我必须再添加一行代码才能使代码正常工作。参见代码

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()

我很高兴这篇文章帮助了你:D