Изменение цвета "Управление вкладкой"

Как изменить цвет фона элемента управления Tab. Я изменил цвет форм, но вкладки остались прежними.

Спасибо.

Ответ 1

Насколько мне известно, в Access 2000/2002/2003 невозможно изменить ни фон, ни цвета переднего плана вкладок.

Итак, если вы хотите изменить внешний вид элемента управления целиком, я думаю, вам не повезло.

Однако, если ваша реальная цель - реализовать какое-то цветовое кодирование страниц управления вкладками, вот что я сделал, когда у меня возникла эта проблема:

  • Я поместил цветной прямоугольник на каждую страницу элемента управления вкладки, чтобы предоставить разные цвета фона для разных страниц.

  • Что касается самих вкладок. К счастью, они могут содержать изображения, поэтому я создал тривиальные файлы изображений, каждая из которых представляла собой небольшую цветную пулю (квадрат, прямоугольник, круг - все, что вам понравилось) и размещало их на вкладках рядом с текстовыми метками.

    /li >

Таким образом, весь элемент управления по-прежнему оставался серым (или тем, что является текущим цветом кнопок в текущей теме Windows), но каждая вкладка и каждая страница были связаны с любыми цветами, в которых я нуждался в них.

Ответ 2

Проверьте стиль "Назад" элемента управления вкладкой. Если он нормальный. вы получите серый фон (с обычными настройками Windows). Если он прозрачен, тогда он наследует цвет фона формы.

Если вы хотите, чтобы это был совершенно другой цвет, вам может потребоваться добавить прямоугольник в форму (сделать фон непрозрачным), увеличить его на вкладке, а затем установить цвет прямоугольника.

Что касается самих вкладок, я не вижу способа установить их цвет независимо.

Ответ 3

В Access 2010 установка цвета свойства "Прессованный цвет" в объекте управления вкладками позволяет установить цвет фона на закладке.

Ответ 4

CodeSlave сделал очень хорошее предложение:

Если вы хотите, чтобы это было полностью разного цвета, возможно, вам придется добавьте прямоугольник в форму (сделайте фон непрозрачный), максимизировать на вкладке, а затем установить цвет прямоугольника.

Если вы хотите, чтобы фон был больше по сравнению с размерами табуляции, чем позволяет вкладка (существует жесткая граница, которая не может быть превышена), существует другое решение (хотя оно несколько сложнее), что это то, что обычно происходит, когда вы настраиваете внешний вид, чтобы не работать так, как ваша рабочая среда по умолчанию предназначена для работы).

Установите элемент управления вкладки в прозрачный. За вкладкой поместите непрозрачный ящик. Затем в событии OnChange вкладки измените цвет фона в поле за вкладкой.

Неплохо, да, но это позволяет вам иметь фон, размер которого равен цельной вкладке (или, что еще более важно, в том случае, если вы хотите, чтобы элементы были за пределами вкладки внутри одного и того же поля цвета).

Ответ 5

Вы можете высмеять это с помощью небольшого кода. Установите для свойства Style значение None для элемента управления вкладки и используйте любой другой элемент управления, в котором есть событие click, чтобы создать свои собственные яркие вкладки (у вас даже могут быть изображения). Ваш код может изменять вкладки или изменять содержимое подформы.

Вкладка "Изменить":

 Me.NameOfTabControlPage.SetFocus

Изменить содержимое управляющего элемента:

 Me.NameOfSubformControl.SourceObject = "NameOfSuitableForm"

Ответ 6

Я разработал подпрограмму, чтобы маленький прямоугольник справа от вкладок был прозрачным. Я тестировал его с 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

Ответ 7

Расширение полезного ответа Duane Rochelle для Access 2010:

Проблема заключается в том, что имена, которые Microsoft предоставила свойствам, которые управляют цветами вкладки, противоречат интуиции.

В принципе, цвет вкладок можно контролировать с помощью свойства "Прессованный цвет" . Ищите его в свойствах всего объекта табуляции, а не свойства отдельных вкладок.

Это означает, что для параметра "Прессованный цвет" используется, например, какой-либо синий (скажем, # 8EA3BD), делает все вкладки синими. Поскольку "нажатие" означает, что "область вкладок находится поверх других вкладок", это более или менее равнозначно окрашиванию области табуляции.

(Для меня лично "Нажатый цвет" является вводящим в заблуждение именем. Из всех вкладок в объекте табуляции по умолчанию видно, что даже никто не "нажимал" вкладку. Лучшее имя было бы "Цвет фона видимая вкладка.)

Для других элементов объекта табуляции, которые нужно рисовать:

Для цвета текста на вкладке (при нажатии кнопки выбора вкладки) используйте свойство "Прессованный цвет" .

Для цвета фона вкладок, которые не видны (или "скрыты за вкладкой, открытой в данный момент" ), используйте свойство "Назад цвет".

Для текста на головах скрытых вкладок используйте свойство Fore Color.

Соответственно, я бы нашел следующие имена более интуитивными:

  • Фоновый цвет видимой вкладки (теперь "Нажатый цвет" )

  • Цвет текста видимой вкладки (теперь "Нажатый передний цвет" )

  • Цвет фона скрытой вкладки (теперь "Назад Цвет" )

  • Цвет текста скрытой вкладки (теперь "Цвет переднего плана" )