Barvna shema: Temna
Trenutno dejavna stran: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Forms Object Library » how-to » Odpiranje obrazcev iz vrstice za krmarjenje

Odpiranje obrazcev iz vrstice za krmarjenje

WklNavBar uporabite na lastnem obrazcu za krmarjenje – v običajnem oknu obrazca ali pojavnem oknu –, ki obrazce aplikacije odpira kot ločena okna, namesto da bi menjal stran v podobrazcu.

Ta stran prikazuje pot s kodo za vrstico, katere vnose oblikujete sami. Vrstica, vezana na tabelo za krmarjenje, sama odpira ciljne obrazce in sledi aktivnemu obrazcu brez spodnje kode: glejte Polnjenje vrstice za krmarjenje iz tabele.

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

Pregled rešitve

Vrstica ne pozna obrazcev, do katerih vodi: Navigate preda ključ izbranega vnosa, aplikacija pa obrazec odpre z DoCmd.OpenForm (ki tudi aktivira obrazec, ki je že odprt). Vrstico in okna usklajujejo trije deli aplikacije:

  • Izbor sledi aktivnemu obrazcu. Vsak ciljni obrazec v Form_Activate nastavi lastnost vrstice SelectedKey. Nastavitev SelectedKey s kodo ne sproži nobenega dogodka, zato to ne more začeti krmarjenja, ne glede na to, kako je uporabnik prišel do obrazca (prek vrstice, s Ctrl+F6, prek menija oken, s klikom na okno).
  • Obrazec za krmarjenje je lahko zaprt. Ciljni obrazec preveri, ali je obrazec za krmarjenje odprt, preden dostopi do vrstice; brez te preverbe Forms("frmNavigation") odpove z napako 2450.
  • Neshranjene spremembe se preverijo v obrazcu izbranega vnosa. BeforeNavigate za Dirty vpraša obrazec, katerega ključ hrani SelectedKey – cilj, v katerem je uporabnik nazadnje delal –, in ne Screen.ActiveForm: na pojavnem obrazcu za krmarjenje je aktivni obrazec obrazec za krmarjenje sam.

Izvedba

Modul obrazca za krmarjenje frmNavigation; ključi vnosov so imena obrazcev:

Private Sub navMain_BeforeNavigate(ByVal Key As String, Cancel As Integer)
    Dim current As String
    current = Me!navMain.Object.SelectedKey
    If Len(current) = 0 Or current = Key Then Exit Sub
    If Not CurrentProject.AllForms(current).IsLoaded Then Exit Sub
    If Forms(current).Dirty Then
        MsgBox "Najprej shranite ali zavrzite spremembe v obrazcu """ & Forms(current).Caption & """.", vbExclamation
        DoCmd.SelectObject acForm, current
        Cancel = True
    End If
End Sub
 
Private Sub navMain_Navigate(ByVal Key As String)
    DoCmd.OpenForm Key
End Sub

Modul vsakega ciljnega obrazca (frmNarocila, frmStranke, …):

Private Sub Form_Activate()
    ' The bar marks this form's entry; code raises no BeforeNavigate or Navigate.
    If CurrentProject.AllForms("frmNavigation").IsLoaded Then
        Forms!frmNavigation!navMain.Object.SelectedKey = Me.Name
    End If
End Sub

Opombe

  • Z okni dokumentov z zavihki in s prekrivajočimi se okni, kot ACCDB, ACCDE in v okolju Access Runtime, za običajni in za pojavni obrazec za krmarjenje velja:
    • izbira odpre cilj, ponovna izbira že odprtega cilja ga aktivira;
    • aktiviranje cilja s kodo ali s Ctrl+F6 premakne izbor brez BeforeNavigate ali Navigate;
    • cilj z neshranjenimi spremembami prekliče izbiro, izbor pa ostane, kjer je;
    • vrstica deluje s povečanim ciljem in s pomanjšanim obrazcem za krmarjenje;
    • ko je obrazec za krmarjenje zaprt, aktiviranje cilja s preverbo IsLoaded ne sproži napake, brez nje pa sproži napako 2450.
  • Ctrl+F6 lahko aktivira tudi sam obrazec za krmarjenje. Običajni obrazec za krmarjenje je kot vsak drug obrazec vključen v Accessovo kroženje oken; izbor tedaj ostane na zadnjem cilju, torej na obrazcu, h kateremu se uporabnik vrne. Pojavni obrazec v kroženje ni vključen.
  • Bližnjična tipka pripada obrazcu vrstice. ToggleShortcut (Ctrl+B) deluje, dokler ima fokus obrazec za krmarjenje, ne pa v ciljnem obrazcu; tam tipka ostane programu Access. Ponudite gumb za preklop ali v ciljnih obrazcih pokličite Toggle z lastno tipko.
  • Odpeta vrstica se odpre nad lastnim obrazcem. Razširjeni prekrivni sloj leži nad oknom obrazca za krmarjenje, tudi ko je aktiven ciljni obrazec; to ni okno nad cilji.
  • Kje ostane fokus po preklicu. Na običajnem obrazcu za krmarjenje fokus obdrži cilj, na pojavnem pa obrazec za krmarjenje. DoCmd.SelectObject v primeru v obeh primerih postavi obrazec s spremembami v ospredje.
  • Zakaj je pri vrstici z oblikovanimi vnosi to koda aplikacije. Kateri obrazec ključ odpre, s katerimi OpenArgs, filtrom ali načinom okna, in kaj šteje za neshranjeno (spremenjen zapis, odprto pogovorno okno, uvoz, ki teče), ve samo aplikacija. Naloga vrstice je, da lahko koda neopazno sledi oknom in da je izbiro mogoče preklicati.

Sorodne teme

sl/wiki/msaccess/comctl/how-to/open-forms-from-the-navigation-bar.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille