Barvna shema: Riviera
Trenutno dejavna stran: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Forms Object Library » how-to » Ustvarjanje dogodkovnih procedur za kontrolnik

Ustvarjanje dogodkovnih procedur za kontrolnik

Dogodek kontrolnika WKL, na primer NodeSelect kontrolnika WklTreeView, ValidateCell kontrolnika WklGrid ali Click kontrolnika WklButton, obravnavajte v modulu obrazca.

Zahteva WKL Forms Object Library 1.23 ali novejšo različico.

Pregled rešitve

Access dogodkov kontrolnika ActiveX nikoli ne navede na zavihku Dogodek lista z lastnostmi. Dogodkovne procedure ustvarite s seznamoma objektov in procedur v oknu s kodo – za vsak kontrolnik WKL – pri kontrolnikih družine dreves in mrež pa tudi na strani oblikovalnika Dogodki (vrstica EventProcedures lista z lastnostmi):

KontrolnikStran oblikovalnika Dogodki (EventProcedures)Seznama objektov in procedur v oknu s kodo
WklTreeView, WklTreeList, WklGantt, WklGrid, WklPropertyGridDaDa
WklSplitter, WklDockLayout, WklStatusLabel, WklNavBar, WklButton, WklValidator, WklToggleSwitch, WklTokenBox, WklBadgeNeDa
WklToast, WklLinkManager (objekta, ne kontrolnika)NeSamo za spremenljivko WithEvents na vrhu modula razreda ali obrazca

Obrazec mora imeti modul (Ima modul = Da); obrazec brez modula ne prejme dogodkov nobenega kontrolnika.

Izvedba

Z oblikovalnikom (družina dreves in mrež):

  1. V pogledu načrta izberite kontrolnik in v listu z lastnostmi odprite zavihek Drugo.
  2. Kliknite [...] v vrstici EventProcedures. Stran Dogodki navede vsak dogodek s kratkim opisom in označi tiste, ki že imajo proceduro.
  3. Izberite dogodek (iskalno polje na vrhu filtrira seznam) in kliknite Ustvari / odpri proceduro ali dvokliknite dogodek.
  4. Stran zaprite z V redu. Access ustvari proceduro in na njej odpre okno s kodo.

Z oknom s kodo (vsak kontrolnik): odprite modul obrazca (Ogled kode), na seznamu objektov izberite kontrolnik (na primer Tree1), na seznamu procedur pa dogodek. Za objekt, kot je WklToast, najprej deklarirajte spremenljivko na ravni modula; nato se prikaže na seznamu objektov:

Private WithEvents mToast As WklToast    ' at the top of the module, not inside a procedure
 
Private Sub Form_Load()
    Set mToast = New WklToast
End Sub

Procedura dobi podpis iz knjižnice tipov:

Private Sub Tree1_NodeDrop(ByVal SourceKey As Variant, ByVal TargetKey As Variant, _
        ByVal Position As WklDropPosition, ByVal Effect As WklDropEffect, Cancel As Integer)
    If MsgBox("Želite premakniti to vozlišče?", vbYesNo) = vbNo Then Cancel = True
End Sub

Opombe

  • Procedura se ustvari šele, ko kliknete V redu; Prekliči zahtevo zavrže. Dokler je okvir z lastnostmi odprt, Accessa ni mogoče poklicati nazaj.
  • Vrstica EventProcedures prikazuje, koliko dogodkov ima proceduro; vnos vanjo nima učinka.
  • Dogodki sporočajo dejanja uporabnika; iste operacije, poklicane iz kode, ne sprožijo dogodkov.
  • NodeFormat in CellFormat se sprožita samo s FormatEvents = True (odpravljanje težav).
  • Ročno vnesena procedura mora imeti parametre dogodka, kot jih navaja referenčni priročnik API, v enakem številu in vrstnem redu, na primer treMain_BeforeUpdate(ByVal Key As Variant, ByVal Action As WklUpdateAction, Cancel As Integer). Sicer:
    • Deklaracija z drugačnim številom parametrov – BeforeUpdate(ByVal Action As Long) – prepreči prevajanje celotnega modula obrazca, s sklicem na knjižnico tipov ali brez njega.
    • Tip naštevanja, kot je WklUpdateAction, potrebuje sklic na WKL Forms Object Library (Orodja › Sklici). Access ga nastavi, ko kontrolnik vstavite ročno; obrazec, naložen z LoadFromText, ga ne, brez njega pa se tudi pravilna deklaracija ne prevede. Long namesto naštevanja se prevede s sklicem ali brez njega.
      • Da se modul ne prevede, ni nikjer sporočeno: RunCommand acCmdCompileAndSaveAllModules ne sproži napake, DoCmd.OpenForm, poklican prek avtomatizacije, pa se vrne, ne da bi odprl obrazec. Po prevajanju preverite Application.IsCompiled. Stran oblikovalnika in seznama v oknu s kodo deklaracijo vedno zapišejo pravilno.

Sorodne teme

sl/wiki/msaccess/comctl/how-to/create-event-procedures.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille