代码之家  ›  专栏  ›  技术社区  ›  Curtis Inderwiesche

在MS Access中以编程方式隐藏列

  •  3
  • Curtis Inderwiesche  · 技术社区  · 15 年前

    我想隐藏或显示基于用户选择的变量数据的列。如何在MS Access 2003中将列设置为隐藏?

    例如,

    用户更改事件之后…

    For Each ctl In Me.FormNameHere.Form.Controls
        If (TypeName(ctl) = "Textbox") Then
            If InStr(GetTextList(), ctl.Name) > 0 Then
                ctl.hidden = True
            Else
                ctl.hidden = False
            End If
        End If
    Next ctl
    
    • 什么是应对这种挑战的最佳方法?
    • 有更明显的解决方案吗?
    4 回复  |  直到 11 年前
        1
  •  5
  •   David-W-Fenton    15 年前

    控件没有“隐藏”属性(Access中没有对象具有隐藏属性)。它们确实有一个.visible属性。

    为了以后的参考,我建议您熟悉vbe中的对象浏览器——打开vbe并点击F2。然后,可以将搜索限制为项目中使用的单个库。不过,要达到理解对象模型的目的确实需要一段时间。

    此外,您还可以依赖IntelliSense来学习对象的属性/方法,因此在您使用的表单的代码中,您可以键入“Me.MyTextBox”。IntelliSense下拉列表将向您显示该特定控件的所有属性和方法。因为不同的控件类型具有不同的属性,所以它不适用于一般的控件变量(如代码中所示)。

    当然,属性表给出了属性的名称,即使在代码中,它们并不总是使用相同的拼写(通常删除空格后它们是相同的)。

    此外,根据它是常规窗体还是数据表窗体,您可能希望如何执行此操作也存在差异。在数据表中,控件还具有.columnhidden和.columnwidth属性(在数据表视图以外的任何视图中设置这些属性都不起作用,并且这些属性在标准属性表中都不可用,但在保存表单时保留对它们的更改)。

        2
  •  5
  •   Community CDub    8 年前

    我回答了 similar question 在不久前,要处理隐藏数据表中的列。但是,您似乎希望隐藏在表单上列中排列的文本框,这是正确的吗?

    如果有多个控件,则对表单中所有控件的迭代可能会很慢。如果您真的需要使用这样的文本框,那么您可以尝试将“列”组合在一起,然后隐藏这些组。另一种方法是使用列表框或数据表来表示数据,您可以在其中直接更改列的布局。

        3
  •  3
  •   Community CDub    8 年前

    我找到了 柱状隐藏的 属性起作用。

    For Each ctl In Me.FormNameHere.Form.Controls
        If (TypeName(ctl) = "Textbox") Then
            If InStr(GetTextList(), ctl.Name) > 0 Then
                ctl.Columnhidden = True
            Else
                ctl.Columnhidden = False
            End If
        End If
    Next ctl
    

    我得到一个提示 this related 问题。

        4
  •  2
  •   brian    11 年前

    一条直线法使用:

    forms(fname).Controls(ctrlname).columnhidden = false
    

    哪里 fname是表单的名称 ctrlname是控件的名称