Usklajevanje barv s temo podatkovne zbirke
Kontrolnike WKL v podatkovni zbirki prikažite v barvah njene teme (Access: Načrt obrazca › Teme) ali pa vedno svetlo oziroma vedno temno, da so seznami, gumbi in glave videti enako kot kontrolniki Access okoli njih.
Zahteva WKL Forms Object Library 1.47 ali novejšo različico.
Pregled rešitve
ColorSchemeje lastnost vsakega kontrolnika WKL in objektaWklToast. Sprejme štiri vrednostiWklColorScheme:wcoAutomatic(privzeto),wcoLight,wcoDarkinwcoHighContrast.- Samodejna shema upošteva po vrsti: način visokega kontrasta v sistemu Windows, nato nabor barv teme podatkovne zbirke in nazadnje svetlo shemo. Podatkovna zbirka brez lastne teme ter uporabniški obrazec (UserForm) v Excelu ali Wordu se izrišeta svetlo. Nastavitve teme v samem Officeu (Datoteka › Račun) in načina aplikacij v sistemu Windows shema ne upošteva: podatkovna zbirka je na vsakem računalniku videti enako.
- Barve, ki jih nastavite sami, imajo prednost.
BackColorinForeColorsledita shemi le, dokler ohranita sistemski privzeti vrednosti (okno, besedilo okna, površina gumba). Barva, izbrana na listu z lastnostmi ali s kodo, ostane enaka v vsaki shemi. - Berljivo v vsaki shemi. Besedilo ima proti ozadju kontrast vsaj 4,5 : 1, črte in simboli vsaj 3 : 1; barve teme, ki tega ne dosežejo, se premaknejo proti barvi besedila.
- Visok kontrast ima vedno prednost. V načinu visokega kontrasta sistema Windows se vsak kontrolnik izriše s sistemskimi barvami uporabnikove kontrastne teme, ne glede na vrednost
ColorScheme.
Izvedba
Temo podatkovne zbirke izberete enkrat: odprite poljuben obrazec v pogledu načrta, izberite
Načrt obrazca › Teme in kliknite eno od tem (na primer Riviera). Kontrolniki WKL, ki ostanejo na
wcoAutomatic, prevzamejo njen nabor barv, ko se njihov obrazec naslednjič odpre; drugega ni treba
storiti. Tema Riviera, tema izdelkov WKL, je priložena paketu izdaje (themes\riviera); njene barve
in pravila za oznake so opisani v datoteki themes\riviera.md paketa izdaje.
Shemo v oblikovalniku nastavite tako: list z lastnostmi, zavihek Drugo, vrstica Po meri
[...], stran Videz, kartica Barvna shema (ColorScheme).
S kodo jo nastavite na primer tako, da je seznam na začetni strani temen, obvestila aplikacije pa vedno svetla:
Option Compare Database
Option Explicit
Private mToast As WklToast
Private Sub Form_Load()
Me!lstKunden.Object.ColorScheme = wcoDark
Me!barKopf.Object.ColorScheme = wcoDark
Set mToast = New WklToast
mToast.ColorScheme = wcoLight
End Sub
Private Sub cmdSpeichern_Click()
mToast.Show "Gespeichert.", wtkSuccess
End Sub
Če naj vsi kontrolniki obrazca sledijo eni izbiri uporabnika (na primer nastavitvi „temni način“ v tabeli nastavitev aplikacije), obrazec lastnost nastavi v zanki:
Public Sub SetSchemeOfForm(ByVal frm As Form, ByVal scheme As WklColorScheme)
Dim ctl As Control
For Each ctl In frm.Controls
If ctl.ControlType = acCustomControl Then TrySetScheme ctl, scheme
Next
End Sub
' WklBadge, WklValidator and ActiveX controls of other vendors have no ColorScheme (error 438).
Private Sub TrySetScheme(ByVal ctl As Control, ByVal scheme As WklColorScheme)
On Error Resume Next
ctl.Object.ColorScheme = scheme
End Sub
Opombe
WklBadgeinWklValidatornimata lastnostiColorScheme: izrisujeta le barve svojih vrst (informacija, opozorilo, napaka), ki na vsakem ozadju ohranijo bledo polnilo in temno besedilo.- Nabor barv se prebere iz podatkovne zbirke, ko se kontrolnik prvič izriše (nikoli med tem, ko Access izrisuje obrazec), in znova, ko se obrazec na novo odpre ali se izvede
Requery. Tema, ki jo spremenite med odprtim obrazcem, se pokaže, ko obrazec znova odprete. ColorSchemese shrani z obrazcem. Obrazec, shranjen brez vrednosti, uporabljawcoAutomatic. Večina podatkovnih zbirk ima privzeto temo programa Access Office (Access jo doda ob prvem obrazcu): njihovi kontrolniki WKL tedaj prevzamejo njen nabor barv – izbor v barvi poudarka Officea, rahlo sive glave – in se tako ujemajo z Accessovimi obrazci ob njih. Kjer naj kontrolnik ne glede na temo ohrani preprost svetel videz, nastavitewcoLight.WklToastnastavitev ohrani le, dokler objekt obstaja;wcoAutomaticprebere nabor barv enkrat ob vsakem klicuShow.
Sorodne teme
- Referenčni priročnik API (v angleščini): WklTreeView.ColorScheme in enaka lastnost vseh drugih kontrolnikov