Access 2007中的颜色常量

5

MS Access 2007表单设计视图属性表格显示了一些颜色选项,我似乎找不到常数以便在代码中使用它们。具体来说:Text DarkText LightBackground Dark HeaderBackground Light Header

这些预定义的常数存在吗?我在对象浏览器或帮助中没有看到它们。如果没有,有谁知道它们的RGB十六进制值吗?

4个回答

6

微软没有很好地记录这个,所以我会为所有通过谷歌搜索“Access Color Constant "Background Light Header"” 的人提供一个晚一点的答案。

我看到的最好的信息是Chris Ward在MSDN AccessDev论坛上回答“访问系统颜色常量”的答案, 发布于2013年1月1日。

我已将该信息重新格式化为枚举:

' 访问系统颜色常量,由Chris Ward于2013年1月1日在MSDN论坛上记录
' https://social.msdn.microsoft.com/Forums/en-US/ccf8b3b7-fa6b-4d05-9883-44b3642e6688/color-themes-decimal-equivelant-documented?forum=accessdev

公共枚举类型SysColors     acColor_Access_Theme_8 = -2147483600                    '访问主题8     acColor_Access_Theme_7 = -2147483601                    '访问主题7     acColor_Access_Theme_6 = -2147483602                    '访问主题6     acColor_Access_Theme_5 = -2147483603                    '访问主题5     acColor_Access_Theme_4 = -2147483604                    '访问主题4     acColor_Access_Theme_3 = -2147483605                    '访问主题3     acColor_Access_Theme_2 = -2147483606                    '访问主题2     acColor_Access_Theme_1 = -2147483607                    '访问主题1     acColor_Highlight = -2147483608                         '高亮显示     acColor_Borders_Gridlines = -2147483609                 '边框/网格线     acColor_Altenate_Row = -2147483610                      '交替行     acColor_Background_Dark_Header = -2147483611            '暗色标题背景     acColor_Background_Light_Header = -2147483612           '浅色标题背景     acColor_Background_Form = -2147483613                   '表单背景     acColor_Text_Description = -2147483614                 '文本描述     acColor_Text_Dark = -2147483615                         '文本暗色     acColor_Text_Light = -2147483616                        '文本浅色     acColor_Text_Black = -2147483617                        '文本黑色     acColor_System_Menu_Bar = -2147483618                   '系统菜单栏     acColor_System_Menu_Highlight = -2147483619             '系统菜单高亮     acColor_System_Gradient_Inactive_Caption = -2147483620 '系统渐变非活动标题     acColor_System_Gradient_Active_Caption = -2147483621    '系统渐变活动标题     acColor_System_Static_Text = -2147483622                '系统静态文本     acColor_System_Static = -2147483623                     '系统静态     acColor_System_Tooltip_Background = -2147483624         '系统工具提示背景     acColor_System_Tooltip_Text = -2147483625               '系统工具提示文本     acColor_System_3D_Light = -2147483626                   '系统3D亮色     acColor_System_3D_Shadow = -2147483627                  '系统3D阴影     acColor_System_3D_Highlight = -2147483628               '系统3D高亮     acColor_System_Inactive_Caption_Light = -2147483629     '系统非活动标题亮色     acColor_System_Button_Text = -2147483630                '系统按钮文本     acColor_System_Alternate_Row = -2147483631              '系统交替行     acColor_System_Button_Shadow = -2147483632              '系统按钮阴影     acColor_System_Button_Face = -2147483633                '系统按钮面     acColor_System_Highlight_Text = -2147483634             '系统高亮文本     acColor_System_Highlight = -2147483635                  '系统高亮     acColor_System_Application_Background = -2147483636     '系统应用程序背景     acColor_System_Inactive_Border = -2147483637            '系统非活动边框

请注意,这些不是数字编码的RGB颜色:它们是指向RGB颜色定义的系统常量或变量的地址,如果选择了自定义系统或应用程序颜色主题,则会更改
实际上,这是件好事,因为需要辅助功能设置的用户 - 高对比度是最常见的例子 - 不会被您硬编码的颜色规格所束缚。
你可能会问我如何枚举更浅和更深的色调 - “文本1,更浅50%”等等 - 但它们实际上不是数值常量:颜色描述符的“更浅”和“更暗”部分实际上是对控件的 .BackTint 和 .BackShade 方法的调用(用于背景颜色),以及字体的 Font.TextColor.TintAndShade 属性(用于前景颜色),您也可以从VBA中调用这些方法。
然而,我建议在编码时打开帮助页面,因为背景和字体的方法工作方式略有不同,并且不一致性会让您犯错。

2
我已经想到了一种(有点)困难的方法来找到答案。我已经在设计时设置了所需颜色的表单,因此我在它们加载期间设置断点,并使用Debug.Print来查找它们的值。在我玩弄一下并确定哪个是哪个之后,我将编辑此答案并提供这些值。
与此同时,我将接受Beth的回答,因为它让我思考了导致解决方案的方向。
以下是最初提出的四个问题的值:
Public Sub SetHeader(frm As Form)
On Error GoTo Error_Handler

'Access-specific Theme colors
Const TextLight     As Long = -2147483616
Const TextDark      As Long = -2147483615
Const BackLight     As Long = -2147483612
Const BackDark      As Long = -2147483611


    With frm
        If gblnAuthorized Then
            .FormHeader.BackColor = BackLight
            !Auto_Title0.ForeColor = TextDark
        Else
            .FormHeader.BackColor = BackDark
            !Auto_Title0.ForeColor = TextLight
        End If
    End With

Exit_Procedure:
    Exit Sub

Error_Handler:
    DisplayUnexpectedError Err.Number, Err.Description
    Resume Exit_Procedure
    Resume
End Sub

编辑2

偶然发现了一种更简单的方法来查找这些值。进入VB编辑器并打开表单代码。在属性窗口顶部的下拉菜单中选择控件,然后从那里读取BackColor(或其他内容) - 它与我在上面的代码中使用的十进制格式相同,而不是Acces设计环境中使用的名称。编辑3 此操作需要在Access主环境中以设计或布局视图打开表单才能正常工作。


1
你可以考虑创建一个枚举,这样你就可以在定义函数/子程序的参数时使用该枚举。 - David-W-Fenton
关于枚举类型的好处很明显。目前的用法是将此子程序放在全局过程模块中,并在(几乎)每个表单的Form_Load事件中调用它,以及一个锁定或解锁数据输入控件的子程序。我不“预计”在其他地方使用这些值,但最好做好准备。 - RolandTumble

1

它们可能来自Windows系统设置,而不在每台计算机上对应于相同的RGB值。

找到这个之后

您还可以在BackColor属性(或任何颜色属性)中看到20个其他选项的列表。这些包括交替行、背景表单、背景浅标题、背景深标题、边框/网格线、文本黑色、文本描述、文本浅色、文本深色、突出显示以及Access主题1、Access主题2等,最多达到Access主题10。这些都是您在Access选项中选择的颜色方案的阴影-蓝色或银色主题的蓝色阴影,黑色主题的灰色和黑色阴影,以及所有主题中带有橙色阴影的突出显示。

这里

我现在认为它是局限于Access的。 这可能是您无法使用单个RGB值完成的事情。


这正是我所想的,但是到目前为止,我在系统常量中没有看到它们的任何地方... - RolandTumble
我认为@Beth的意思是在外观下选择的浅色和深色文本的颜色:“Windows标准”,“Windows Aero”等。 - Fionnuala
1
这些颜色 恰好 是我想要使用的颜色,以便它们随着用户主题选择而跟踪 - 但是我想在代码中动态地执行它,以便我可以使用标题颜色来指示用户是否可以修改表单上的项目(而不使个别项目变灰和难以辨认)。感谢您找到 BOL 条目 - 它并没有完全回答我的问题,因为它没有告诉我如何在运行时使用它们,但这比我迄今为止找到的更多。 - RolandTumble

0
VBA Constant                Description

vbScrollBars                Scrollbar color
vbDesktop                   Desktop color
vbActiveTitleBar            Color of the title bar for the active window
vbInactiveTitleBar          Color of the title bar for the inactive window
vbMenuBar                   Menu background color
vbWindowBackground          Window background color
vbWindowFrame               Window frame color
vbMenuText                  Color of text on menus
vbWindowText                Color of text in windows
vbTitleBarText              Color of text in caption, size box, and scroll arrow
vbActiveBorder              Border color of active window
vbInactiveBorder            Border color of inactive window
vbApplicationWorkspace      Background color of multiple document interface applications
vbHighlight                 Background color of items selected in a control
vbHighlightText             Text color of items selected in a control
vbButtonFace                Color of shading on the face of command buttons
vbButtonShadow              Color of shading on the edge of command buttons
vbGrayText                  Grayed (disabled) text
vbButtonText                Text color on push buttons
vbInactiveCaptionText       Color of text in an inactive caption
vb3DHighlight               Highlight color for 3-D display elements
vb3DDKShadow                Darkest shadow color for 3-D display elements
vb3DLight                   Second lightest 3-D color after vb3DHighlight
vbInfoText                  Color of text in ToolTips
vbInfoBackground            Background color of ToolTips

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接