更改“Tab Control”颜色

时间:2008-11-03 17:41:08

标签: ms-access forms

如何更改标签控件背景颜色。我更改了表单颜色,但标签保持不变。

感谢。

7 个答案:

答案 0 :(得分:6)

检查选项卡控件的后退样式。如果是正常的话。您将获得灰色背景(具有正常的Windows设置)。如果它是透明的,那么它将继承表单的背景颜色。

如果您希望它是完全不同的颜色,您可能需要在表单中添加一个矩形(使背景不透明),在选项卡中最大化它,然后设置矩形的颜色。

至于他们自己的标签,我没有看到一种独立设置颜色的方法。

答案 1 :(得分:6)

据我所知,在Access 2000/2002/2003中,不可能既不改变背景,也不改变标签的前景色。

所以,如果你想改变整个标签控件的外观,我认为你运气不好。

但是,如果您真正的目标是实现选项卡控件页面的某种颜色编码,那么这就是我遇到此问题时所做的:

  • 我在标签控件的每个页面上放置了一个彩色矩形,为不同的页面提供不同的背景颜色。

  • 至于标签本身。幸运的是,它们可以包含图像,因此我创建了琐碎的图像文件,每个图像文件都是一个小的彩色子弹(方形,矩形,圆形 - 看起来更好看),并将它们放在文本标签旁边的标签上。

    < / LI>

因此,整个控件仍然保持灰色(或Windows当前主题中当前的“按钮颜色”),但每个选项卡和每个页面都与我需要它们的颜色相关联。

答案 2 :(得分:4)

使用Access 2010,在选项卡控件对象中设置“Pressed Color”属性的颜色可以设置选项卡页面的背景颜色。

使用Access 2013,还需要为选项卡控件设置“Back Color”属性的颜色(与“Pressed Color”颜色相同)。

答案 3 :(得分:2)

CodeSlave提出了非常好的建议:

  

如果你想要它完全是一个   不同的颜色,你可能不得不   在表单中添加一个矩形(制作   背景不透明),最大化   它在选项卡中然后设置   矩形的颜色。

如果你想要一个比标签尺寸更大的背景而不是标签允许的(有一个不能超过的硬边框),还有另一个解决方案(虽然它有点复杂 - 哪个当您调整外观以使其无法按照默认环境设计的方式工作时,通常会发生这种情况。)

将标签控件设置为透明。在标签后面,放置一个不透明的盒子。然后在选项卡的OnChange事件中,更改选项卡后面框的背景颜色。

有点凌乱,是的,但是它允许你有一个与整个标签一样大的背景(或者更大的,如果你可能想要在同一个颜色区域内的标签上的项目)。

答案 4 :(得分:1)

你可以用一些代码来模拟它。将选项卡控件的“样式”属性设置为“无”,并使用具有单击事件的任何其他控件创建自己的彩色选项卡(甚至可以包含图像)。您的代码可以更改选项卡,也可以更改子表单的内容。

更改标签:

 Me.NameOfTabControlPage.SetFocus

更改子窗体控件内容:

 Me.NameOfSubformControl.SourceObject = "NameOfSuitableForm"

答案 5 :(得分:1)

我开发了一个子程序,将标签右侧的小矩形设置为透明。我使用Access 2003和2007进行了测试。

Private Const GWL_EXSTYLE = -20
Private Const WS_EX_TRANSPARENT = &H20&

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Public Sub PatchTabControl(ByVal f As Form)
   Dim hwnd As Long
   hwnd = FindWindowEx(f.hwnd, 0, "OFormSub", vbNullString)
   If hwnd = 0 Then Exit Sub
   hwnd = FindWindowEx(f.hwnd, hwnd, "OFormSub", vbNullString)
   If hwnd = 0 Then Exit Sub
   hwnd = FindWindowEx(hwnd, 0, "OTabControl", vbNullString)
   If hwnd = 0 Then Exit Sub
   SetWindowLong hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) Or WS_EX_TRANSPARENT
   End Sub

答案 6 :(得分:0)

扩展Duane Rochelle对Access 2010的有用答案:

问题似乎是微软给出了控制标签颜色的属性的名称是违反直觉的。

基本上,可以使用 Pressed Color 属性控制选项卡的颜色。在整个选项卡对象的属性中查找它,而不是单个选项卡的属性。

这意味着,将 Pressed Color 设置为 - 例如 - 某种蓝色(例如#8EA3BD)会使所有标签变为蓝色。因为&#34;按下&#34;实际上意味着&#34;标签区域位于其他标签的顶部&#34;,这或多或少等同于着色标签区域。

(对我个人而言,&#34; Pressed Color&#34;是一个误导性的名称。在标签对象中的所有标签中,默认情况下可以看到一个标签,即使没有任何人按下&#34;按下#34;标签一个更好的名字是&#34;可见标签的背景颜色&#34;。)

对于要绘制的制表符对象的其他元素:

对于标签页上文字的颜色(您单击以选择标签的位置),请使用按下的前色属性。

对于不可见的标签(或&#34;隐藏在当前打开的标签&#34;后面)的背景颜色,请使用 Back Color 属性。

对于隐藏标签页首上的文字,请使用 Fore Color 属性。

因此,我会发现以下名称更直观:

  • 可见标签的背景颜色(现在&#34;按下颜色&#34;)

  • 可见标签的文字颜色(现在&#34;按下前颜色&#34;)

  • 隐藏标签的背景颜色(现在&#34;背面颜色&#34;)

  • 隐藏标签的文字颜色(现在&#34; Fore Color&#34;)