【问题标题】:Conditional Formatting in Access with Disabled or 'Read-only' TextboxesAccess 中禁用或“只读”文本框的条件格式
【发布时间】:2020-03-26 22:07:51
【问题描述】:

我有一个带有一些绑定文本框的访问连续表单。我想提供每条记录状态的可视化指示器,因此文本框包含一个值,表中的 0、1 或 2。条件格式将此框变为绿色(0)、黄色(1)和红色(2)(包括文本颜色),因此该框实际上只是用户的一种颜色。

我已禁用文本框以防止用户单击该框并看到它是一个文本框,但将Enabled = False 设置为属性似乎会因条件格式而关闭。然后我在条件格式中应用了Enabled 框,但是虽然这确实禁用了文本框,但它关闭了条件格式,如果你锁定它,它不会改变文本颜色。

是否有另一个控件我最好在这里使用,或者是否允许文本框条件格式在用户无法单击文本框的情况下工作?

【问题讨论】:

  • 财产Locked怎么样?
  • 感谢@FoxfireAndBurnsAndBurns - 我确实提到了不幸的是,这样做确实可以保持BackColor 属性不变,但不幸的是会将ForeColor 更改为默认的灰色/黑色。

标签: vba ms-access


【解决方案1】:

要禁止点击进入文本框,它必须有

Enabled = False
Locked = True

要不使用条件格式覆盖它,格式条件还必须包含Enabled = False

请注意,在条件格式对话框中,它看起来好像颜色不起作用 - 对话框不知道 Locked = True。但它会在表单中起作用。

我记得在对话框中设置 Enabled = False 时遇到问题(这是在 Access 2010 中),所以我使用代码来创建它:

' myForm must be open in Design view
Public Sub MyCreateCondFormat()

    Dim F As Form_myForm
    Dim fld As TextBox
    Dim objFrc As FormatCondition

    Set F = Form_myForm

    Set fld = F.myTextbox
    fld.FormatConditions.Delete

    Set objFrc = fld.FormatConditions.Add(acFieldValue, acEqual, "42")
    With objFrc
        .Enabled = False    ' <----------
        .ForeColor = &H0000FF
    End With

End Sub

【讨论】:

  • 安德烈:太棒了!我不知道 FormatConditions.Add 是可能的。
  • 非常感谢@Andre - 这非常有效。 UI 非常具有误导性,对于未来的读者来说,正如 Andre 在上面提到的那样,预览框显示了完全不同的输出,但它确实按表单中的预期工作。再次感谢。
【解决方案2】:

Enabled = False 改变背景颜色。如果您设置 Locked = False 它只会阻止用户更改数据。 你的复选框必须有

Enabled = True
Locked = True

我在这种情况下对其进行了测试,它可以工作:

【讨论】:

  • 但是即使不能更改值,也可以点击进入文本框,这可能是不可取的。
  • 在 On_Enter 事件中将焦点设置到不同的控件。
猜你喜欢
  • 1970-01-01
  • 2014-08-15
  • 2018-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多