Obravnava lastnih bližnjic v lupini aplikacije
Lupini aplikacije – glavnemu obrazcu, katerega območja razporeja WklDockLayout, z WklNavBar in podobrazcem, ki
prikazuje strani – dajte lastne bližnjične tipke (Ctrl+1 in Ctrl+2 za preklop strani, Ctrl+N za nov zapis, F5 za
vnovično branje), ki delujejo kjer koli je fokus: v polju z besedilom strani, v kontrolniku WklGrid na strani ali v
sami lupini.
Zahteva WKL Forms Object Library 1.45 ali novejšo za ShortcutKeys; način s posredovanjem na koncu deluje od
različice 1.24.
Pregled rešitve
KeyPreviewlupine ne zadošča. Tipke, vnesene v podobrazec, dosežejo samo obrazec tega podobrazca in njegove kontrolnike;Form_KeyDownlupine jih ne vidi.- Postavitev opazuje celoten obrazec.
WklDockLayout.ShortcutKeysnavaja kombinacije v zapisu makra AutoKeys (^1;^2;^N;{F5}). Postavitev vidi vsako tipko, ki jo uporabnik pritisne v njenem obrazcu, vključno s podobrazci, preden jo vidita Access in kontrolnik s fokusom, in za navedeno tipko sprožiShortcut. - Odloča eno mesto. Procedura
Shortcutlupine izvede ukaz in nastaviHandled = True; tipka nato ne doseže nikogar drugega. Tipka, pri kateri ostaneHandled = False, gre naprej, kot da je postavitev sploh ne bi pogledala.
Izvedba
V modulu obrazca lupine frmShell (postavitev layShell, podobrazec strani sfPage):
Option Compare Database
Option Explicit
Private Sub Form_Load()
Me!layShell.Object.ShortcutKeys = "^1;^2;^N;{F5}"
End Sub
Private Sub layShell_Shortcut(ByVal Key As String, Handled As Boolean)
Select Case Key
Case "^1"
Me!sfPage.SourceObject = "frmSeje"
Handled = True
Case "^2"
Me!sfPage.SourceObject = "frmPotrdila"
Handled = True
Case "^N"
Me!sfPage.Form!grdSeznam.Object.NewRecord
Handled = True
Case "{F5}"
Me!sfPage.Form!grdSeznam.Object.Requery
Handled = True
End Select
End Sub
ShortcutKeys lahko nastavite tudi v pogledu načrta (list z lastnostmi, zavihek Drugo); shrani se z obrazcem.
Opombe
Keyje zapisan vedno enako, ne glede na zapis vShortcutKeys: modifikatorji v vrstnem redu^+%, črka kot velika črka (^N,+{F2},{ESC}).- Črka ali števka brez Ctrl (
^) ali Alt (%) je ob nastavitvi seznama zavrnjena: sprožila bi se med tipkanjem. - Izberite kombinacije, ki jih kontrolniki sami ne potrebujejo (mreža med drugim uporablja puščične tipke, Enter, Delete, F2, Ctrl+C, Ctrl++ in Ctrl+-; tipke posameznega kontrolnika so navedene v njegovi referenci). Navedena tipka je najprej ponujena dogodku
Shortcut, tudi če bi jo uporabil kontrolnik. WklNavBarse sam preklopi s Ctrl+B (ToggleShortcut), F6 pa premika med območji postavitve; obe tipki delujeta tudi obShortcutKeys.- Modalno pogovorno okno ali pojavni obrazec v ospredju prejema svoje tipke kot običajno; postavitev sporoča samo tipke svojega obrazca.
Brez WklDockLayout: posredovanje z vsake strani
Lupina brez postavitve pusti, da vsaka stran posreduje svoje tipke. Obrazec strani nastavi KeyPreview na Da in
Form_KeyDown – ter KeyDown kontrolnika WKL s fokusom – preda eni javni funkciji lupine, ki vrne, ali je tipko
prevzela:
' Module of a page form with the grid grdStranke.
Private Sub Form_Load()
Me.KeyPreview = True
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If Forward(KeyCode, Shift) Then KeyCode = 0
End Sub
Private Sub grdStranke_KeyDown(KeyCode As Integer, ByVal Shift As Integer)
If Forward(KeyCode, Shift) Then KeyCode = 0
End Sub
Private Function Forward(ByVal KeyCode As Integer, ByVal Shift As Integer) As Boolean
On Error Resume Next
If CurrentProject.AllForms("frmShell").IsLoaded Then
Forward = Forms!frmShell.HandleShortcut(KeyCode, Shift)
End If
End Function
HandleShortcut v lupini primerja KeyCode in Shift (na primer KeyCode = vbKeyN And Shift = acCtrlMask) in za obravnavano tipko vrne True.