【问题标题】:find parent of a subform查找子窗体的父级
【发布时间】:2021-09-16 14:38:51
【问题描述】:

我需要知道是什么在打开一个控件所在的对象。

我有一个刷新组合框的程序,但我永远不会知道组合框是位于窗体、子窗体还是另一个子窗体内(2 级子窗体)

现在,在打开表单时,我将该信息硬编码到一个隐藏控件,并将其传递给一个过程,但我想知道是否有办法做这样的事情,而不是我硬编码。

取决于组合框所在的位置,它会是 或

    VMainForm = Me.Parent.Name
    VMainForm = Me.Name
    VMainForm = Me.Parent.Name '(? not even sure how to do this one,
'this would be where the combo is sitting inside another subform,
' so, there's Main!Subform1@Subform2)

更好的解决方案是获取子表单的完整路径。

所以,如果我在第二个子表单上,我会得到 mainform!subform1!subform2

如果我在子表单上,我会得到 mainform!subform1

如果我在 main,我会得到 mainform。

【问题讨论】:

    标签: vba ms-access


    【解决方案1】:

    你甚至没有尝试过?

    VMainFormName = Me.Parent.Name
    

    如果不是子表单,这当然会失败。因此,要么捕获该错误,要么循环 Forms 集合以获得控件的形式。

    【讨论】:

    • 没错,如果不是子表单,它会失败,如果它是子表单中的子表单,那么我会得到错误的答案。我试图看看如何做到这一点,我会得到最高的父母。或者,更好的是,如何获取完整的子表单和主表单。所以,如果我在第二个子表单上,我会得到父母,第一个子和这个子。如果我在主线,我会得到主线。如果我在子表单上,我会得到 main 和 sub。如何循环仅通过当前集的形式?表格不会给我所有打开的表格吗?除了这个打开的,还可以有其他的。
    • 是的,Forms 集合包含所有打开的表单,不包括所有子表单。因此,如果在 Forms 中找不到父窗体,它也将是一个子窗体。
    • 问题是我无法知道哪个打开的是我的父母而不是其他形式。但我对如何写这个有一个想法。
    • 它将是名为Me.Parent.Name的表单。
    • 或 me.parent.parent.name.
    猜你喜欢
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多