如何有条件地格式化连续形式的文本框边框?
Posted
技术标签:
【中文标题】如何有条件地格式化连续形式的文本框边框?【英文标题】:How can I conditionally format textbox border on continuous form? 【发布时间】:2016-09-02 14:12:15 【问题描述】:在 Access 2010 中,我有一个连续表单,我想根据另一个单元格中的值更改“单元格”的某些属性,例如边框颜色。我还没有找到在 VBA 中执行此操作的方法,因为它是一种连续形式,并且直接在 VBA 中更改属性会更改所有记录,而不仅仅是我所在的记录。我假设我必须使用某种形式的条件格式,但条件格式 GUI 只允许我设置背景颜色、基本文本格式和 Enabled 属性。
如何在连续表单上的控件上设置其他属性,仅针对特定记录?
【问题讨论】:
【参考方案1】:反馈我最后是如何解决这个问题的。 txtFixMax 是我想要为其赋予时髦边框的控件(取决于字段 [ChangedToday] 中的值)。它已经有条件格式来改变背景颜色。 我创建了第二个控件 txtFixMaxOverlay,将其制成一个小方块,并将其放在控件 txtFixMax 的顶部。我设置了 txtFixMaxOverlay 的属性来移除边框,并赋予它与 txtFixMax 相同的条件格式,使其肉眼不可见(但 Visible 属性 = true)。然后我根据 [ChangedToday] 给了它附加条件,列表中的第一个条件,以更改其背景颜色。
效果不是边框(尽管有很多乏味的 4 个控件的定位,我可以这样做来提供边框效果),但它确实给了我一个额外的元素来视觉上改变。效果是:
【讨论】:
Ack,我是否允许/应该接受我自己的答案? O.o 是的,如果您认为这是对您问题的最佳答案,您应该接受自己的答案。【参考方案2】:你不能。使用背景或文本颜色。
另见https://msdn.microsoft.com/en-us/library/office/ff821010.aspx - 只有BackColor
和ForeColor
。
【讨论】:
谢谢,安德烈。我希望有人找到一些聪明的解决方法。我已经尝试过覆盖文本框和各种方法,但还没有找到任何东西。【参考方案3】:是的,您可以...只是不使用内置的条件格式功能。 使用表单详细信息部分的 Paint 事件。仍然存在各种限制,但至少您可以设置更多属性,而不仅仅是背景和前景色。
例子:
Private Sub Detail_Paint()
If Me.IndicatorColumn.Value = "Critical" Then
Detail.BackColor = RGB(255,0,0)
Detail.AlternateBackColor = Detail.BackColor
Me.AnotherColumn.BorderStyle = 7 'Dash Dot Dot
Me.AnotherColumn.BorderColor = vbMagenta
Else
Detail.BackColor = vbWhite
Detail.AlternateBackColor = RGB(150, 150, 150)
Me.AnotherColumn.BorderStyle = 0 'Transparent
Me.AnotherColumn.BorderColor = vbWhite
End If
End Sub
见TextBox.BorderStyle。
【讨论】:
以上是关于如何有条件地格式化连续形式的文本框边框?的主要内容,如果未能解决你的问题,请参考以下文章
给定十六进制代码的查找,如何有条件地格式化 Shiny 中的文本?