如何有条件地格式化连续形式的文本框边框?

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 - 只有BackColorForeColor

【讨论】:

谢谢,安德烈。我希望有人找到一些聪明的解决方法。我已经尝试过覆盖文本框和各种方法,但还没有找到任何东西。【参考方案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 中的文本?

用户单击表单文本框时的格式帮助

如何根据 s-s-rS 中单独字段的值有条件地格式化整行的文本颜色?

边框颜色怎么设置

如何在条件格式中适应非常长的条件

javascript中怎么循环提取文本框内容,做成json格式传送到新窗口显示??