Farbschema: Dunkel
Sie befinden sich hier: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Forms Object Library » how-to » Obravnava lastnih bližnjic v lupini aplikacije

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

  • KeyPreview lupine ne zadošča. Tipke, vnesene v podobrazec, dosežejo samo obrazec tega podobrazca in njegove kontrolnike; Form_KeyDown lupine jih ne vidi.
  • Postavitev opazuje celoten obrazec. WklDockLayout.ShortcutKeys navaja 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ži Shortcut.
  • Odloča eno mesto. Procedura Shortcut lupine izvede ukaz in nastavi Handled = True; tipka nato ne doseže nikogar drugega. Tipka, pri kateri ostane Handled = 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

  • Key je zapisan vedno enako, ne glede na zapis v ShortcutKeys: 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.
  • WklNavBar se sam preklopi s Ctrl+B (ToggleShortcut), F6 pa premika med območji postavitve; obe tipki delujeta tudi ob ShortcutKeys.
  • 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.

Sorodne teme

sl/wiki/msaccess/comctl/how-to/handle-shortcuts-in-a-shell.txt · Zuletzt geändert: von Wolfgang van der Stille