2008-11-03 44 views
10

Làm cách nào để thay đổi màu nền của Điều khiển tab . Tôi đã thay đổi màu của biểu mẫu, nhưng các tab vẫn giữ nguyên.thay đổi màu "Điều khiển tab"

Cảm ơn.

+0

Vui lòng chỉ định ngôn ngữ/môi trường bạn đang sử dụng. – JosephStyons

+0

Có, xin vui lòng, làm điều đó !!! – Yarik

Trả lời

5

Kiểm tra Kiểu Quay lại của Điều khiển Tab. Nếu đó là Bình thường. bạn sẽ nhận được một nền màu xám (với các cài đặt Windows thông thường). Nếu nó là Transparent thì nó sẽ kế thừa màu nền của biểu mẫu.

Nếu bạn muốn nó là một màu hoàn toàn khác, bạn có thể phải thêm hình chữ nhật vào biểu mẫu (làm nền không trong suốt), tối đa hóa nó trong tab và sau đó đặt màu của hình chữ nhật.

Đối với các tab chúng tự chọn, tôi không thấy cách cài đặt màu của chúng độc lập.

6

Theo như tôi biết, trong Access 2000/2002/2003, không thể thay đổi cả nền, không phải màu nền trước của các tab.

Vì vậy, nếu bạn muốn thay đổi diện mạo của toàn bộ kiểm soát tab, tôi nghĩ bạn đã hết may mắn.

Tuy nhiên, nếu mục tiêu thực sự của bạn là thực hiện một số loại mã màu của các trang tab kiểm soát của, đây là những gì tôi đã làm khi tôi có vấn đề này:

  • tôi đặt một hình chữ nhật màu trên mỗi trang của điều khiển tab để cung cấp các màu nền khác nhau cho các trang khác nhau.

  • Riêng đối với các tab. May mắn là chúng có thể chứa hình ảnh, vì vậy tôi đã tạo ra các tệp hình ảnh nhỏ, mỗi tệp là một viên đạn nhỏ màu (hình vuông, hình chữ nhật, hình tròn - bất kỳ hình nào đẹp hơn cho bạn) và đặt chúng trên các tab, bên cạnh nhãn văn bản.

Do đó, toàn bộ điều khiển vẫn giữ màu xám (hoặc màu "nút hiện tại" trong chủ đề hiện tại của Windows), nhưng mỗi tab và mỗi trang đều được liên kết với bất kỳ màu nào tôi cần.

1

Bạn có thể giả lập điều này bằng một mã nhỏ. Đặt thuộc tính Kiểu thành Không cho điều khiển tab và sử dụng bất kỳ điều khiển nào khác có sự kiện nhấp để tạo các tab đầy màu sắc của riêng bạn (thậm chí bạn có thể có hình ảnh). Mã của bạn có thể thay đổi các tab hoặc thay đổi nội dung của biểu mẫu con.

Thay đổi tab:

Me.NameOfTabControlPage.SetFocus 

Thay đổi nội dung kiểm soát subform:

Me.NameOfSubformControl.SourceObject = "NameOfSuitableForm" 
2

CodeSlave đã gợi ý rất tốt:

Nếu bạn muốn nó là một màu sắc khác nhau hoàn toàn , bạn có thể phải thêm hình chữ nhật vào biểu mẫu (tạo nền không trong suốt), tối đa hóa trong tab và sau đó đặt màu của hình chữ nhật.

Nếu bạn muốn có nền có kích thước lớn hơn so với tab cho phép (có viền cứng không thể vượt quá), có một giải pháp khác (mặc dù nó hơi phức tạp hơn - đó là những gì thường xảy ra khi bạn tinh chỉnh diện mạo để không hoạt động theo cách môi trường mặc định của bạn được thiết kế để hoạt động).

Đặt điều khiển tab thành trong suốt. Đằng sau tab, đặt một hộp không trong suốt. Sau đó, trong sự kiện OnChange của tab, thay đổi màu nền của hộp phía sau tab.

Kinda lộn xộn, có, nhưng nó cho phép bạn có một nền lớn như toàn bộ tab (hoặc lớn hơn vẫn còn, trong trường hợp bạn có thể muốn các mục ra khỏi tab bên trong cùng một lĩnh vực màu).

0

Tôi đã phát triển một chương trình con để đặt hình chữ nhật nhỏ ở bên phải của các tab thành trong suốt. Tôi đã thử nghiệm nó với Access 2003 và 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 
3

Với quyền truy cập 2010, đặt màu của thuộc tính "Nhấn màu" trong đối tượng điều khiển tab cho phép bạn đặt màu nền của trang tab.

+1

Điều này đã làm cho các trick cho tôi! Phải mất một lúc tôi mới tìm được điều khiển "tab". Bạn phải bấm vào dải có chứa các tab, nhưng không phải trên các tab mình. – UhClem

0

Mở rộng câu trả lời hữu ích Duane Rochelle cho Access 2010:

Vấn đề dường như là những cái tên mà Microsoft đã đưa ra các thuộc tính điều khiển màu sắc tab là ngược trực quan.

Về cơ bản, màu sắc của các tab có thể được điều khiển bằng cách sử dụng thuộc tính Màu đã được nhấn. Tìm kiếm nó trong thuộc tính của toàn bộ đối tượng tab, không phải thuộc tính của các tab riêng lẻ.

Điều này có nghĩa là, thiết lập Màu đã nhấn thành - ví dụ - một số loại màu xanh lam (ví dụ, # 8EA3BD) làm cho tất cả các tab màu xanh dương. Vì "được nhấn" có nghĩa là "vùng tab nằm trên đầu các tab khác", điều này ít nhiều tương đương với tô màu vùng tab. Trong tất cả các tab trong một đối tượng tab, một tab được hiển thị theo mặc định, ngay cả khi không ai có "nhấn" một tab. Một tên tốt hơn sẽ là "Màu nền tab có thể nhìn thấy")

Đối với các yếu tố khác của một đối tượng tab mà người ta muốn vẽ:.

Đối với màu sắc của văn bản trên đầu tab (nơi bạn bấm vào để chọn tab) , sử dụng thuộc tính Nhấn Fore Color.

Đối với màu nền của tab không hiển thị (hoặc "ẩn đằng sau tab đang mở"), sử dụng Trở lại màu tài sản.

Đối với văn bản trên đầu tab bị ẩn, hãy sử dụng thuộc tính Fore Color.

Theo đó, tôi sẽ tìm thấy những tên sau đây trực quan hơn: màu

  • Bối cảnh của tab có thể nhìn thấy (bây giờ "Pressed Color")

  • Màu chữ của tab có thể nhìn thấy (bây giờ "ép Fore Màu ")

  • màu nền của tab ẩn (nay là "Back Color")

  • màu chữ của ẩn tab (bây giờ là "Màu Fore")

Các vấn đề liên quan