Farbschema: Dunkel
Sie befinden sich hier: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Forms Object Library » how-to » Ohranjanje uporabnikove razporeditve

Ohranjanje uporabnikove razporeditve

Vsak uporabnik naj obrazec najde razporejen tako, kot ga je pustil – ali pa razporeditev hranite na lastnem mestu, na primer v tabeli nastavitev na strežniku, ali ponudite gumb, ki obnovi načrt.

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

Pregled rešitve

Brez kode si oba kontrolnika postavitve zapomnita razporeditev za vsakega uporabnika sistema Windows (AutoSaveLayout, privzeto vklopljeno) pod ključem (LayoutKey, privzeto „ime obrazca.ime kontrolnika“). Layout razporeditev vrne in sprejme kot besedilo za kodo, ki jo hrani drugje; Reset obnovi načrt in odstrani zapomnjeno razporeditev.

WklGrid in WklTreeList enako naredita za svoje stolpce: širine, vrstni red, skrite stolpce, pasove, razvrščanje, združevanje, filtre stolpcev mreže in višino njenih podrobnih pogledov – z istimi lastnostmi, isto tabelo in istimi pravili.

Izvedba

Za privzeto vedenje ni treba storiti ničesar: vsaka sprememba uporabnika ali kode se takoj shrani in ob naslednjem odpiranju obrazca vrne. Gumb za načrt:

Private Sub cmdDefaultLayout_Click()
    Me!Layout1.Object.Reset      ' also removes the user's row in USysWklLayout
End Sub

Enako za stolpce mreže:

Private Sub cmdDefaultColumns_Click()
    Me!Grid1.Object.Reset
End Sub

Dva obrazca, ki si delita eno razporeditev, ali isto ime obrazca v dveh dokumentih z uporabniškimi obrazci (UserForm) dobita lasten ključ (stran oblikovalnika Vedenje, polje Ključ, ali koda, preden se obrazec prikaže):

Private Sub Form_Open(Cancel As Integer)
    Me!Layout1.Object.LayoutKey = "Skrbnik.GlavnaPostavitev"
End Sub

Lastno shranjevanje namesto vgrajenega – izklopite AutoSaveLayout in hranite besedilo:

Private Sub Form_Open(Cancel As Integer)
    With Me!Layout1.Object
        .AutoSaveLayout = False
        .Layout = Nz(DLookup("Postavitev", "tblNastavitve", "Uporabnik = '" & Environ("USERNAME") & "' AND Obrazec = 'frmSkrbnik'"), "")
    End With
End Sub
 
Private Sub Layout1_AfterLayoutChange(ByVal Pane As String)
    SaveUserSetting "frmSkrbnik", Me!Layout1.Object.Layout ' your own procedure
End Sub

Opombe

  • V Accessu gre razporeditev v lokalno tabelo USysWklLayout podatkovne zbirke, v kateri je obrazec, po ena vrstica za vsakega uporabnika sistema Windows (DOMENA\ime) in ključ; predpona USys jo naredi za skrito sistemsko tabelo. Sprednji del, kopiran na vsako delovno postajo, hrani razporeditve lokalno; skupen na terminalskem strežniku jih hrani ločeno po uporabnikih. Pri uporabniških obrazcih (UserForm) v Excelu in Wordu gre v HKEY_CURRENT_USER\Software\The White Knight Labs\Access Framework\Layouts.
  • Razporeditev, enaka načrtu, se ne shrani: Reset in Refresh ne pustita ničesar za sabo.
  • Layout, nastavljen s kodo, preden se obrazec prikaže, ima prednost pred zapomnjeno razporeditvijo; koda, ki razporeditve hrani drugje, ni nikoli prepisana.
  • Besedilo je JSON ({"format":"WklDockLayout",...} ali {"format":"WklSplitter",...}); besedilo drugega kontrolnika ali neberljivo besedilo sproži wkeInvalidValue. Območja, ki v starejšem besedilu manjkajo, obdržijo svoj načrt, zato shranjeno besedilo preživi spremembe obrazca.
  • Sprednji del samo za branje ali zavrnjeno pisanje obrazca ne pokvari; razporeditev se takrat preprosto ne zapomni.
  • Mreže in drevesni seznami shranjujejo samo razlike. Stolpec, ki se ga uporabnik ni nikoli dotaknil, sledi poznejši spremembi načrta; stolpci, odstranjeni iz načrta, so prezrti, novi pa se prikažejo, kot so oblikovani. Njihov načrt je tisto, kar kontrolnik prikaže ob prvem prikazu – s spremembami, ki jih je s kodo naredil Form_Load. Izbira, iskalno besedilo in razširjeni zapisi se ne zapomnijo.
  • Podrobni pogledi mreže nimajo lastne razporeditve; njihova višina je del razporeditve mreže.

Sorodne teme

sl/wiki/msaccess/comctl/how-to/keep-the-users-arrangement.txt · Zuletzt geändert: von Wolfgang van der Stille