WKL Forms Object Library: kontrolniki za obrazce Access
Kontrolniki ActiveX za obrazce Microsoft Access, zgrajeni na .NET 10: drevesa, podatkovni listi, gantogram,
postavitev, krmarjenje, gumbi, prikaz stanja, preverjanje vnosa in obvestila. Delujejo, kot da so del Accessa:
zgodnja vezava z IntelliSense, nastavitve v listu z lastnostmi in v oknu oblikovalnika, dogodki v modulu obrazca,
stalne številke napak ter delovanje v datotekah ACCDB in ACCDE in v okolju Access Runtime. Dokumentacija je
namenjena razvijalcem v Accessu in VBA, ki kontrolnike postavljajo na obrazce, ter skrbnikom, ki jih nameščajo v
računalnike uporabnikov. Trenutna izdaja: 2.0.0 – spremembe posameznih izdaj so opisane v datoteki
CHANGELOG.md paketa izdaje. Do izdaje 1.68.2 se je knjižnica imenovala WKL Access Components.
Kateri problem rešujejo
Kontrolniki, ki jih Access ponuja v pogledu načrta (polje z besedilom, kombinirano polje in polje s seznamom, podobrazec, kontrolnik zavihka, gumb in podobni), zadoščajo za klasičen vnos podatkov. Manjka pa marsikaj, kar uporabniki danes pričakujejo od poslovne programske opreme: drevo, vezano na tabelo, podatkovni list, ki združuje, filtrira in sešteva kot sodobna mreža, gantogram, vrstica za krmarjenje, pripeta območja, ki sledijo velikosti okna, oznake stanja in kratka obvestila. Razvijalci v Accessu to vrzel zapolnjujejo z zasilnimi rešitvami – gnezdenimi podobrazci, neprekinjenimi obrazci s pogojnim oblikovanjem, nevezanim kontrolnikom Microsoft TreeView iz zbirke Common Controls, ki ga polni VBA. Takšne rešitve v vsaki aplikaciji zahtevajo lastno kodo, pa vendar se po videzu in vedenju še vedno razlikujejo od preostalega Officea.
Zbirke komponent, kot sta DevExpress WinForms in Telerik UI for WinForms, to težavo rešujejo za aplikacije .NET s
kontrolniki Windows Forms. Obrazec Access pa sprejme samo kontrolnike ActiveX, zato teh zbirk v Accessu ni mogoče
uporabiti. WKL Forms Object Library primerljive zmožnosti prinaša v Access v obliki kontrolnikov ActiveX, ki
upoštevajo navade Accessa: RecordSource, LinkMasterFields, Requery, list z
lastnostmi, dogodki v modulu obrazca, ACCDE in okolje Runtime.
Primeri uporabe
| Naloga | Kontrolnik |
|---|---|
| Prikaz hierarhije iz tabele (organizacija, kosovnica, mape) in urejanje z vlečenjem in spuščanjem | WklTreeView, WklTreeList |
| Seznam zapisov z združevanjem, vrstico filtra, seštevki, glavnimi in podrejenimi zapisi ter milijonom vrstic s strežnika | WklGrid |
| Urejanje enega zapisa kot seznama lastnosti ob seznamu | WklPropertyGrid |
| Načrtovanje opravil z odvisnostmi in delovnim koledarjem, izmenjava načrtov z Microsoft Project | WklGantt |
| Lupina aplikacije s krmarjenjem na levi, glavo z ukazi in stranmi, ki zapolnijo okno | WklNavBar, WklActionBar, WklDockLayout |
| Preverjanje vnosa po pravilih, preden se zapis shrani, s sporočilom ob polju | WklValidator |
| Povezovanje tabel s strežniki za razvoj, preizkušanje in produkcijo ter preklapljanje med njimi | WklLinkManager |
| Prikaz niza meritev z mejami in trendom ali števil po mesecih | WklChart |
| Prikaz, kje se kaj dogaja: prijave po mestih, lokacije ali stranke na zemljevidu sveta | WklMap |
| Iskanje med tipkanjem, osveževanje števca vsakih 30 sekund, pošiljanje velikega števila spletnih zahtev v tempu, ki ga dovoljuje storitev | WklTimerList |
| Merjenje in prikaz ključnega kazalnika, stanja ali števila | WklGauge, WklStatusLabel, WklBadge |
Kje so meje: komponente ne nadomeščajo Accessovih kontrolnikov za preprosta vnosna polja, v poročilih ne delujejo kot seznami (seznam tam prikaže le obvestilo) in niso kontrolniki Windows Forms za aplikacije .NET.
Prvi koraki
- Namestitev izdanega paketa – predpogoji, bitna različica, registracija
- Prehod aplikacije na izdajo 2.0 – za aplikacije, zgrajene z izdajo 1.x
- Gradnja skrbniške aplikacije – več kontrolnikov v eni aplikaciji: lupina s krmarjenjem in stranmi ter seznam s zasidranim obrazcem za urejanje, ki preverja vnos (vadnica predloge WKL Administration Shell Template)
- Vezava drevesa na tabelo in Mreža strank z naročili – vsakič en kontrolnik
Pogosta opravila
Opravila za posamezen kontrolnik najdete v njegovem pregledu (glejte Ključne zmožnosti).
Grafični prikaz
graph TD
P["1 – Paket izdaje: x86 ali x64, tools, addin, control-blocks"]
F["2 – Računalnik, za vsakega uporabnika sistema Windows: lokalna mapa (brez skrbniških pravic)"]
A["3 – Access: pogovorno okno s kontrolniki ActiveX navaja WKL Grid, WKL TreeView …; sklic WKL Forms x.y Object Library"]
R["4 – Obrazec s kontrolniki WKL: list z lastnostmi, oblikovalnik, dogodki v modulu obrazca"]
P -- "kopiranje" --> F
F -- "registracija: regsvr32 /n /i:user" --> A
A -- "vstavljanje kontrolnika" --> R| Območje | Pomen |
|---|---|
| 1 | Izdaja: kontrolniki v bitni različici Officea, orodje za gradnjo, dodatek WKL Extensions in gradniki kontrolnikov |
| 2 | Datoteke, kopirane v trajno mapo in registrirane za trenutnega uporabnika sistema Windows |
| 3 | Access ponudi kontrolnike in knjižnico tipov; ko kontrolnik vstavite, se sklic nastavi sam |
| 4 | Vsak kontrolnik na obrazcu nastavite v listu z lastnostmi, v njegovem oblikovalniku ali z VBA |
Ključne zmožnosti
Kontrolnike postavite na Accessove obrazce (ali na obrazce UserForm); komponente, označene z (objekt), ustvarite v VBA in nimajo lastnega okna.
Pogledi podatkov
Prikaz in urejanje zapisov iz tabel in poizvedb.
| Komponenta | Namen | Dokumentacija |
|---|---|---|
WklGrid | Podatkovni list brez hierarhije, z združevanjem, filtri stolpcev, glavnimi in podrejenimi zapisi, podrobnimi pogledi, strežniškim načinom za velike tabele in pogledom seznama. | pregled · referenčni priročnik (v angleščini) |
WklTreeView | Drevo, vezano na tabelo, poizvedbo ali stavek SQL, z urejanjem, vlečenjem in spuščanjem, iskanjem in filtrom. | pregled · referenčni priročnik (v angleščini) |
WklTreeList | Hierarhični podatkovni list: drevo s stolpci, urejevalniki celic, oblikovanjem, seštevki in izvozom v Excel. | pregled · referenčni priročnik (v angleščini) |
WklGantt | Gantogram na podatkovnem listu, z odvisnostmi, delovnim koledarjem, razporejanjem in izmenjavo z Microsoft Project. | pregled · referenčni priročnik (v angleščini) |
WklPropertyGrid | En zapis kot vrstice „napis · vrednost“ v kategorijah, na lastnem obrazcu ali kot podrobnosti. | pregled · referenčni priročnik (v angleščini) |
WklChart | Črtni, točkovni, stolpčni ali palični grafikon tabele ali poizvedbe, ki sledi trenutnemu zapisu, z mejami, pasovi in trendom. | pregled · referenčni priročnik (v angleščini) |
WklMap | Točke na zemljevidu sveta iz tabele ali poizvedbe, velikost in barva glede na vrednost; sledi trenutnemu zapisu in deluje brez kartografske storitve. | pregled · referenčni priročnik (v angleščini) |
Urejevalniki podatkov
Posamezne vrednosti na obrazcu, vezane tako kot kontrolniki Accessa.
| Komponenta | Namen | Dokumentacija |
|---|---|---|
WklToggleSwitch | Preklopno stikalo Da/Ne s takojšnjim učinkom, vezano kot potrditveno polje. | pregled · referenčni priročnik (v angleščini) |
WklTokenBox | Več vrednosti zapisa kot žetoni s predlogi, shranjeni v podrejeni tabeli. | pregled · referenčni priročnik (v angleščini) |
WklButtonEdit | Polje z besedilom z gumbom na desni, vezano kot polje z besedilom, za vrednosti iz pogovornega okna ali preverjanja. | pregled · referenčni priročnik (v angleščini) |
WklSpinEdit | Število s puščicama gor in dol, mejami, korakom in enoto, vezano kot polje z besedilom; tudi kot stolpec seznama (wedSpin). | pregled · referenčni priročnik (v angleščini) |
WklValidator | Polja z besedilom na Accessovem obrazcu preveri po pravilih in prepreči, da bi se napačen zapis shranil. | pregled · referenčni priročnik (v angleščini) |
Postavitev
Razporejanje, deljenje ter razpiranje in strnjevanje območij obrazca.
| Komponenta | Namen | Dokumentacija |
|---|---|---|
WklDockLayout | Ob vsaki spremembi velikosti obrazca razporedi njegova območja v cone, z razdelilniki in skupinami zavihkov. | pregled · referenčni priročnik (v angleščini) |
WklSplitter | Razdelilnik med dvema območjema obrazca, ki ga uporabnik premika ali z njim strne eno stran. | pregled · referenčni priročnik (v angleščini) |
WklDrawer | Plošča ob desnem robu obrazca, ki se odpre ob seznamu; vsaka vsebina ima svojo širino, kontrolniki v njej pa sidra. | pregled · referenčni priročnik (v angleščini) |
Krmarjenje in ukazi
Premikanje po aplikaciji in zaganjanje njenih ukazov.
| Komponenta | Namen | Dokumentacija |
|---|---|---|
WklNavBar | Vrstica za krmarjenje v lupini aplikacije, napolnjena s kodo ali iz tabele za krmarjenje. | pregled · referenčni priročnik (v angleščini) |
WklActionBar | Glava strani ali lupine aplikacije: naslov, podnaslov, stanje in vrstica ukazov z razdeljenimi gumbi in bližnjicami; ukazi, ki ne gredo v vrstico, se premaknejo v meni. | pregled · referenčni priročnik (v angleščini) |
WklButton | Ukazni gumb, gumb z menijem, razdeljeni ali segmentni gumb v videzu sodobnega Officea. | pregled · referenčni priročnik (v angleščini) |
WklRibbon (objekt) | Trakovi, pogled Datoteka in priročni meniji podatkovne zbirke iz enega seznama ukazov, z oblikovalnikom in pogoji. | pregled · referenčni priročnik (v angleščini) |
WklNavPane (objekt) | Podokno za krmarjenje programa Access kot ena kategorija s skupinami, prikaznimi imeni, začetno skupino in pogoji, z oblikovalnikom. | pregled · referenčni priročnik (v angleščini) |
Stanje in povratne informacije
Prikaz stanj, števil in rezultatov uporabniku.
| Komponenta | Namen | Dokumentacija |
|---|---|---|
WklStatusLabel | Stanje v eni vrstici – besedilo z vrsto, ki določa njegove barve –, vezano kot polje z besedilom. | pregled · referenčni priročnik (v angleščini) |
WklBadge | Število ali pika na kotu gumba, oznake ali polja z besedilom Access. | pregled · referenčni priročnik (v angleščini) |
WklToast (objekt) | Kratka obvestila po dejanju, z izbirnim dejanjem, kot je Razveljavi. | pregled · referenčni priročnik (v angleščini) |
WklGauge | Vrednost na lestvici z barvnimi območji: polkrog ali tričetrtinski krog, vodoravna ali navpična palica, več palic z legendo. | pregled · referenčni priročnik (v angleščini) |
WklKpiCard | Ključni kazalnik za začetno stran: vrednost, odstopanje od primerjalne vrednosti, stanje, mini grafikon, značka; klikljiva kot ploščica. | pregled · referenčni priročnik (v angleščini) |
Predstavnost
Črtne kode, kode QR in slike na obrazcih in v poročilih.
| Komponenta | Namen | Dokumentacija |
|---|---|---|
WklBarcode | Koda QR, Code 128 ali Data Matrix iz besedila, vezana kot polje z besedilom; v poročilih koda za vsak zapis. | pregled · referenčni priročnik (v angleščini) |
WklImage | Slika iz datoteke, galerije slik podatkovne zbirke, besedila SVG ali polja; SVG ostane oster pri vsaki velikosti, enobarvni simboli prevzamejo barvo obrazca. | pregled · referenčni priročnik (v angleščini) |
Aplikacija in povezave
Aplikacija kot celota in njeni viri podatkov.
| Komponenta | Namen | Dokumentacija |
|---|---|---|
WklApplication (objekt) | Naslov, ikona, začetni obrazec, trak in uporabniški vmesnik vsakega načina (razvoj, upravljanje, produkcija) kot zagonske lastnosti, z nastavitvami, ki jih sme prilagoditi upravljavec. | pregled · referenčni priročnik (v angleščini) |
WklLinkManager (objekt) | Povezane tabele ODBC podatkovne zbirke sprednjega dela usklajuje z nastavitvami za posamezen profil (DEV, TEST, PROD). | pregled · referenčni priročnik (v angleščini) |
WklTimerList | Časovno načrtovana opravila obrazca: zakasnjeno iskanje, redna preverjanja in čakalna vrsta spletnih zahtev v nadzorovanem tempu, brez zanke DoEvents. | pregled · referenčni priročnik (v angleščini) |
WklTexts (objekt) | Lastna besedila aplikacije po ključu v jeziku komponent, iz tabele USysWklTexts; standardna besedila, kot so V redu, Prekliči in Shrani, v vseh petih jezikih. | navodila · referenčni priročnik (v angleščini) |
FindNodes, filtri JPath in AsJSON uporabljajo mehanizem JSON iz knjižnice WKL Office JSON, ki je vključena v
paket izdaje. Za hiter začetek je na voljo predloga lupine aplikacije z vrstico za krmarjenje, stranjo v podobrazcu
in vrstico z ukazi (v paketu pod templates\app-shell).
Osnovni pojmi
Trije načini nastavljanja kontrolnika. List z lastnostmi (zavihek Drugo), okno oblikovalnika kontrolnika
(Odpiranje oblikovalnika kontrolnika) in VBA prek lastnosti Object
kontrolnika (Me!Tree1.Object.RecordSource = …). Vsi trije nastavljajo iste lastnosti, ki jih Access shrani
z obrazcem.
Dogodki v modulu obrazca. Kontrolnik svoje dogodke sproži v modulu obrazca, na katerem je. Na zavihku Dogodek lista z lastnostmi jih Access ne navaja; procedure ustvarite na strani oblikovalnika Dogodki ali s seznamoma v oknu s kodo (Ustvarjanje dogodkovnih procedur za kontrolnik).
Vezava na podatke kot pri kontrolnikih Accessa. Seznami berejo RecordSource (tabelo, poizvedbo ali stavek
SQL) in uporabnikove spremembe takoj zapišejo nazaj (AutoSave); za drevo zadoščajo RecordSource, KeyField,
ParentField in TextField. Kaj mora vir zapisov omogočati, opisuje razdelek
Urejanje in shranjevanje: predpogoji. V pogledu načrta kontrolnik vira
podatkov ne bere, razen če je LivePreview nastavljen na True
(Prikaz resničnih podatkov v pogledu načrta).
Stalne številke napak. Kontrolniki sprožajo napake s stalnimi številkami (konstante WklErrorCode) in z
Err.Source = "WklForms"; besedila, ki jih vidijo uporabniki, so v jeziku komponent
(Obravnava napak kontrolnikov WKL v VBA).
Jezik. Oblikovalniki, sporočila, Err.Description, priročni meniji in imena za bralnike zaslona so v
angleščini, nemščini, slovenščini, hrvaščini ali italijanščini: v jeziku modela aplikacije, sicer v jeziku
Officea, sicer sistema Windows, sicer v angleščini. Številke napak, imena lastnosti, shranjene vrednosti in
IntelliSense so v vseh jezikih enaki; datumi in števila sledijo področnim nastavitvam sistema Windows
(Izbira jezika komponent).
Barve. Vsak kontrolnik ima barvno shemo (ColorScheme). Privzeta samodejna shema najprej upošteva visoki
kontrast sistema Windows, nato barve teme podatkovne zbirke Access (na primer „Riviera“), sicer uporabi svetlo
paleto; svetlo, temno ali visokokontrastno shemo lahko izberete tudi izrecno. Kontrolniki ne sledijo temi
Officea (barvita, temno siva, črna), ki jo Office hrani za vsak uporabniški račun posebej
(Usklajevanje barv s temo podatkovne zbirke).
Ena knjižnica tipov, katere različica sledi vmesniku. Podatkovna zbirka se sklicuje na knjižnico tipov WKL Forms Object Library in ob odpiranju uporabi različico, registrirano v računalniku; glejte Različice.
Skrbništvo
Odpravljanje težav
Vsaka stran opiše simptom, različice, na katere se nanaša, vzrok in rešitev.
Za razvijalce
- Referenčni priročnik API za vse razrede in naštevanja (v angleščini): povezave so v stolpcu Dokumentacija v razdelku Ključne zmožnosti; zbirke in njihovi elementi: WklColumns · WklColumn · WklBands · WklBand · WklFormatRules · WklFormatRule · WklLinkDifferences · WklLinkDifference
Sorodne teme
CHANGELOG.mdv paketu izdaje – kaj je spremenila posamezna izdaja- Predloga lupine aplikacije (v paketu pod
templates\app-shell, opisana v tamkajšnji datoteki README) – okvir aplikacije, ki ga zgradi orodje za gradnjo
Referenčni priročnik
Različice
Kontrolniki si delijo eno knjižnico tipov, WKL Forms Object Library, katere različica se zviša ob vsaki
spremembi vmesnika. Izdaja ima različico x.y.z: x.y je različica knjižnice tipov, z šteje popravke
brez spremembe vmesnika. Spremembe posameznih izdaj so opisane v datoteki CHANGELOG.md paketa izdaje; trenutna
izdaja je 2.0.0.
| Kontrolnik ali objekt | Od izdaje |
|---|---|
WklTreeView, WklTreeList, WklGantt, WklGrid, WklSplitter, WklDockLayout, WklStatusLabel, WklLinkManager | 1.23.0 |
WklNavBar | 1.24.0 (tabela za krmarjenje: 1.26.0) |
WklButton | 1.26.0 (razdeljeni in segmentni gumbi, značka: 1.27.0) |
WklValidator | 1.31.0 |
WklToggleSwitch | 1.32.0 |
WklTokenBox | 1.33.0 |
WklToast | 1.34.0 |
WklBadge | 1.35.0 |
Pogled seznama WklGrid | 1.36.0 |
Skupine zavihkov WklDockLayout | 1.37.0 |
WklPropertyGrid | 1.38.0 |
WklButtonEdit, WklSpinEdit | 1.43.0 |
WklGauge, WklKpiCard | 1.44.0 |
WklActionBar | 1.46.0 |
ColorScheme vseh kontrolnikov in WklToast; EditOnClick mrež | 1.47.0 |
WklDrawer | 1.48.0 |
WklRibbon in oblikovalnik trakov | 1.49.0 |
WklNavPane, oblikovalnik podokna za krmarjenje in predloga lupine aplikacije | 1.50.0 |
WklApplication, oblikovalnik aplikacije, appModel in deploy orodja za gradnjo | 1.51.0 |
WklBarcode, WklImage; javna dokumentacija v paketu izdaje | 1.52.0 |
Dodelitve priročnih menijev v WklRibbon (ShowAssignments, ApplyAssignments, EnsureMenus), vgrajeni ukazi prek idMso | 1.53.0 |
Uporabniški vmesnik v angleščini, nemščini, slovenščini, hrvaščini in italijanščini; jezik za posamezno aplikacijo (language v modelu aplikacije) | 1.54.0 |
Okna, širša od 22 palcev: WklDockLayout s sidri iz načrta, kontrolniki WKL na straneh, širših od 22 palcev; lupina aplikacije zapolni široka okna | 1.54.1 |
Preverjanje zaupanja datoteke aplikacije (WklApplication.CheckTrust, TrustReport, Test-AccessTrust.ps1), WklApplication.Version in Build, INSTALL.txt v vsaki mapi izdaje orodja za gradnjo | 1.55.0 |
Bootstrapper 1.0 v paketu (bootstrapper\), tabela za krmarjenje USysWklShellNavigation predloge lupine, barvna tabela Riviera (themes\riviera.md) | 1.56.0 |
Predloga lupine: AppShell_CanClose in AppShell_Closed ob zapiranju lupine, vnosi vrstice brez strani gredo v AppShell_Command; navodilo za sledenje ne izprazni več registrskega ključa | 1.56.1 |
Besedila, ki jim sledi vrednost, v angleščini, slovenščini, hrvaščini in italijanščini ohranijo presledek; bootstrapper 2.0 in registration.json v paketu | 1.56.2 |
Datoteke in mape iz Raziskovalca, spuščene na WklGrid, WklTreeList, WklGantt in WklTreeView (AllowFileDrop, FileDragOver, FileDrop); sporočila zagonskega modula v petih jezikih | 1.57.0 |
WklActionBar.Logo (slika na levi strani pasu, AppShell_Logo() v predlogi lupine); podnaslov predloge lupine je viden; ročno napisani trakovi se prevzamejo v oblikovalnik trakov | 1.58.0 |
WklActionBar.SubtitleForeColor (lastna barva podnaslova; -1 sledi ForeColor), AppShell_SubtitleColor() v predlogi lupine | 1.59.0 |
Popravki: oznake napak v mrežah so vedno rdeče, Da/Ne v prvem stolpcu mreže kot potrditveno polje, CommandStateChange po stanju, ki ga je prebral program, tipke dosežejo podrejeno okno kontrolnika s fokusom, opozorilo orodja za gradnjo, ko sklic zabeleži novejšo različico od navedene | 1.59.1 |
Popravki: CommandStateChange tudi za mrežo brez lastnega okna (v območju WklDockLayout v skritem okolju Runtime); dokumentacija, razvrščena po vrstah komponent | 1.59.2 |
WklTimerList (zakasnjene in periodične naloge, čakalna vrsta spletnih zahtev v nadzorovanem tempu), WklChart | 1.60.0 |
Pravilo oblikovanja wrkColorScale (toplotni zemljevid); WklChart in merilniki v poročilih s PrintStyle; predloga lupine kot projekt SDK; popravki: vrstni red skupin v WklTreeList pri razvrščanju po drevesnem stolpcu, položaj vnosov na zaslonu v pogledu seznama WklGrid | 1.62.0 |
WklMap; popravek: sledenje COM ne zapisuje več vrednosti polj | 1.63.0 |
Filtriranje stolpcev v WklTreeList in WklGantt (vrstica filtra, seznam vrednosti v glavi stolpca, vrstica filtrov, FilterIncludesChildren); popravek: WklGrid.ColumnFilterValues z več vrednostmi | 1.64.0 |
Popravek: Access se ne zruši več nekaj minut po tem, ko VBA v pogledu obrazca spremeni bližnjično tipko kontrolnika WklButton ali WklActionBar | 1.64.1 |
WklTexts (besedila aplikacije po ključu v jeziku komponent, standardna besedila wkl.*, jezik za preskusno sejo) | 1.65.0 |
Napisi s ključem (@orders.title) v kontrolnikih WKL in modelu traku; WklTexts.Localize za obrazce in poročila, WklTexts.CaptionText | 1.66.0 |
Nevtralna besedila, besedila aplikacije v poljubnih jezikih, jezikovna mapa i18n (WklTexts.Folder, tudi za Excel in Word) | 1.67.0 |
Popravki: WklDockLayout ne prekrije več sosednjih območij, kadar območje potrebuje več prostora, kot ga ima okno; z FillSection Access v tem primeru ne ostane več zaseden | 1.67.2 |
Popravki: WklDockLayout razširi tudi obrazec, prikazan v kontrolniku podobrazca, kadar območje potrebuje več prostora, kot ga ima okno; paket vsebuje gradnik kontrolnika WklMap | 1.67.3 |
WklMap: izsek sveta (Extent, VisibleExtent), povečava in premikanje, ki ju izvaja uporabnik (AllowZoom, ExtentChanged), natančnejše meje za regijo, lastno barvno polje (ColorField, ColorRange, ColorFormat); popravek: WklTexts in drugi predmeti, ustvarjeni s CreateObject, najdejo Access tudi med odpiranjem začetnega obrazca | 1.68.1 |
Popravki: Ctrl+C, Ctrl+X, Ctrl+V in Ctrl+Z delujejo v urejevalnikih celic kontrolnikov WklGrid, WklTreeList in WklPropertyGrid ter v drugih besedilnih poljih kontrolnikov; Ctrl+C na celici kopira celico ali izbor; spustni seznam se odpre samo pod svojo celico | 1.68.2 |
WKL Access Components se zdaj imenuje WKL Forms Object Library (sklic WKL Forms 1.68 Object Library; ProgID-ji, datoteke in knjižnica tipov so nespremenjeni); kontrolniki to ime sporočajo kot ime aplikacije (OLEClass); orodja dodatka z angleškimi imeni; sporočila, pregledana za njihove bralce | 1.68.3 |
Glavna različica 2: knjižnica se imenuje WklForms (sklic WKL Forms 2.0 Object Library, ProgID-ji WklForms.*, zagonski modul Wkl.Forms.ObjectLibrary.dll); ID-ji razredov in člani iz 1.68 so nespremenjeni; registracija izdaje 2.0 odstrani 1.x (Prehod aplikacije na izdajo 2.0) | 2.0.0 |
Katera različica je registrirana. Za vsako bitno različico je hkrati registrirana le ena različica: ko registrirate izdajo, se za tega uporabnika odstrani registracija vseh drugih različic knjižnice, zato podatkovna zbirka nikoli ne uporabi starejše kopije. Registrirano različico ugotovite takole:
- V urejevalniku VBA Orodja › Sklici prikaže WKL Forms x.y Object Library za podatkovno zbirko, ki uporablja kontrolnike.
V VBA:
Dim r As Reference For Each r In References If r.Guid = "{A37D549E-FCD0-48EC-8B14-C7323B747E4F}" Then Debug.Print r.Major & "." & r.Minor, r.FullPath Next- Komponente same navedejo svojo izdajo:
WklApplication.Versionjo vrne (1.55.0),WklApplication.Buildpa izdajo, znak plus in celoten identifikator commita (potrditve sprememb) izvorne kode (1.55.0+ce4b826c...). V poročilu o napaki navediteBuild. - V lastnostih datoteke (Podrobnosti)
Wkl.Forms.ObjectLibrary.dllkaže izdajo kot različico datoteke in izdelka,Wkl.Forms.ObjectLibrary.Managed.dllpa izdajo z identifikatorjem commita kot različico izdelka. Gradnja iz izvorne kode, ki ni bila potrjena v commitu, nima oznake; paket izdaje je vedno zgrajen iz commita, ki ga navaja njegova oznaka (tag).
Zagotovilo združljivosti. Ko je izdaja objavljena, se člani z DISPID-ji in razredi z GUID-i nikoli več ne spremenijo in ne odstranijo; nove izdaje samo dodajajo, vsak dodatek pa zviša različico knjižnice tipov. Obrazci hranijo nastavitve svojih kontrolnikov WKL v obrazcu (OleData), novejša izdaja pa prebere nastavitve, ki jih je shranila starejša; nastavitve, ki jih doda novejša izdaja, imajo v obrazcih iz starejše izdaje privzeto vrednost. Izdaja s popravki (z) ne spremeni nobenega člana.
Podatkovna zbirka s sklicem na starejšo različico deluje tudi z novejšo registracijo iste glavne različice: Access ob
odpiranju podatkovne zbirke sklic razreši na registrirano knjižnico. Z izdajo 2.0 se začne nova glavna različica z
imenom knjižnice WklForms; podatkovno zbirko, zgrajeno z izdajo 1.x, je treba enkrat prenesti
(Prehod aplikacije na izdajo 2.0). Preden podatkovna zbirka uporabi člane novejše izdaje, jo znova
prevedite (Razhrošči › Prevedi) in izdelajte novo datoteko ACCDE. V nasprotni smeri to ne deluje: podatkovna
zbirka, zgrajena z novejšo izdajo, se s starejšo registracijo ne izvaja – sklic je prekinjen (MISSING), Access
pa javi napako 459 ali „Object library not registered“. Najprej namestite komponente, šele nato podatkovno zbirko
(Uvajanje aplikacije s kontrolniki WKL v računalnike uporabnikov). Pri obrazcih
UserForm v Excelu in Wordu je drugače: Office od prve uporabe dalje hrani kopijo knjižnice za vsako različico,
zato vsaka sprememba vmesnika zviša različico.
Glavna različica 2.0. Razrešitev sklica na novejšo registracijo je zagotovljena le znotraj njegove glavne
različice. Access sicer prek istega ID-ja knjižnice poveže sklic podatkovne zbirke za izdajo 1.x tudi z izdajo 2.0,
vendar ProgID-ji WklComponents.* takrat niso več registrirani. Izdaja 2.0 je
preimenovala knjižnico iz WklComponents v WklForms, ProgID-je iz WklComponents.* v WklForms.* in zagonski
modul v Wkl.Forms.ObjectLibrary.dll. Člani, DISPID-ji in GUID-i so enaki kot v izdaji 1.68, obrazci pa obdržijo
svoje kontrolnike. Aplikacijo za izdajo 1.x enkrat prenesete
(Prehod aplikacije na izdajo 2.0).
Podprta okolja
Podpora po kontrolnikih, vse v programu Access iz Microsoft 365:
| Kontrolnik ali objekt | ACCDB | ACCDE | Access Runtime | Obrazci UserForm v Excelu in Wordu |
|---|---|---|---|---|
WklTreeView, WklTreeList | Podprto | Podprto | Podprto | Osnovna uporaba |
WklGantt, WklGrid | Podprto | Podprto | Podprto | Osnovna uporaba |
WklSplitter, WklDockLayout | Podprto | Podprto | Podprto | Osnovna uporaba |
WklStatusLabel, WklNavBar, WklButton | Podprto | Podprto | Podprto | Osnovna uporaba |
WklToggleSwitch, WklTokenBox, WklBadge, WklToast | Podprto | Podprto | Podprto | Osnovna uporaba |
WklValidator | Podprto | Podprto | Podprto | Ni podprto (preverja Accessove obrazce) |
WklLinkManager | Podprto | Podprto | Podprto | Ni podprto (povezuje tabele Access) |
WklPropertyGrid | Podprto | Podprto | Podprto | Osnovna uporaba |
WklButtonEdit, WklSpinEdit | Podprto | Podprto | Podprto | Osnovna uporaba |
WklGauge, WklKpiCard | Podprto | Podprto | Podprto | Osnovna uporaba |
WklActionBar | Podprto | Podprto | Podprto | Osnovna uporaba |
WklDrawer | Podprto | Podprto | Podprto | Ni podprto (postavi kontrolnik podobrazca Access) |
WklRibbon (vključno z dodelitvami priročnih menijev) | Podprto | Podprto | Podprto | Ni podprto (trakovi Access) |
WklNavPane | Podprto | Podprto | Podprto (zapiše vrstice; okolje Runtime ne prikaže podokna za krmarjenje) | Ni podprto (podokno za krmarjenje Access) |
| Predloga lupine aplikacije | Podprto | Podprto | Podprto | Ni podprto (Accessovi obrazci) |
WklApplication | Podprto | Podprto | Podprto | Ni podprto (zagonske lastnosti Access) |
WklBarcode, WklImage (tudi v poročilih: predogled tiskanja in PDF) | Podprto | Podprto | Podprto | Osnovna uporaba |
WklTimerList | Podprto | Podprto | Podprto | Osnovna uporaba |
WklChart | Podprto | Podprto | Podprto | Osnovna uporaba (brez podatkov: bere jih prek programa Access) |
„Osnovna uporaba“ pri obrazcih UserForm v Excelu in Wordu pomeni: kontrolnik je mogoče vstaviti na obrazec UserForm, ga vezati na njegove podatke, uporabljati iz VBA in shraniti z obrazcem UserForm; druga uporaba na obrazcih UserForm ni podprta.
Urejanje in shranjevanje: predpogoji
WklTreeView, WklTreeList, WklGantt in WklGrid uporabnikovo spremembo – preimenovanje, premik, celico,
kljukico, nov, kopiran ali izbrisan zapis – takoj zapišejo v RecordSource (AutoSave = True, privzeto). Ali to
lahko uspe, je odvisno od vira zapisov.
- Vir zapisov mora biti v Accessu posodobljiv – preizkusite, ali lahko v njegovem podatkovnem listu spremenite vrednost. Tabela, izbirna poizvedba nad eno tabelo in besedilo SQL kot
RecordSourceshranjevanje omogočajo; poizvedba UNION, poizvedba zGROUP BY, prepustna poizvedba in povezana tabela ODBC brez enoličnega indeksa pa zavrnejo zapis z napakowkeSourceError(&H80040302): „Spremembe (Preimenovanje) vozlišča 2 ni bilo mogoče shraniti v „qUnion“: …“, nato sledi sporočilo programa Access, da posodobitev ni mogoča, ker je podatkovna zbirka ali objekt samo za branje. Nič se ne shrani, vozlišče pa obdrži besedilo iz vira. - Polja, v katera vir ne more pisati, ne odprejo urejevalnika (
WklGrid,WklTreeList,WklGantt,WklPropertyGrid): priAutoSave = Trueseznam vir enkrat preveri – DAO-jevaUpdatableinDataUpdatable, polja s samoštevilom, pri povezani tabeli ODBC pa gonilnik (stolpci IDENTITY, izračunani stolpci in stolpci rowversion). Take celice se vedejo kotReadOnly. PriAutoSave = Falsese nič ne izklopi, ker spremembo zapiše aplikacija sama. Dodajanje, brisanje, preimenovanje vWklTreeViewin vlečenje ostanejo vklopljeni: zavrnitev se pokaže šele ob shranjevanju spremembe. Pri uporabnikovi spremembi se transakcija razveljavi, drevo se znova naloži, sproži seDataErrorz zgornjim besedilom, nato pa se prikaže okno s sporočilom, razen čeDataErrornastaviResponsenaacDataErrContinue(0). Pri viru, ki ga ni mogoče posodabljati, urejanje izklopite:AllowEditing = False(LabelEdit = FalsevWklTreeView),AllowAdditions = False,AllowDeletions = Falsein brez vlečenja in spuščanja. KeyFieldmora enolično določati en zapis. Zapis se poišče po ključu: pri tabeli ali poizvedbi v SQL (SELECT * FROM [source] WHERE [key] = …), pri besedilu SQL sFindFirstv naboru dynaset. Ključ, ki se pojavi dvakrat, zavrne zapis zwkeDuplicateKey(&H80040303): „Ključ 2 se v viru podatkov pojavi več kot enkrat. KeyField mora vsak zapis enolično označiti.“; nič se ne shrani. Sestavljeni ključ jeKeyField = "OrderID;LineNo"; njegova polja gredo v isti pogoj zAND.- Povezane tabele ODBC (SQL Server, Wkl OData) potrebujejo v programu Access enoličen indeks, ki ga Access ob povezovanju tabele prevzame iz primarnega ključa. Povezana tabela SQL Server s primarnim ključem shranjuje; ista tabela brez kakršnega koli indeksa je samo za branje in zavrne zapis kot zgoraj. Kontrolnik odpre svoj nabor dynaset z
dbSeeChanges, kar zahtevajo tabele SQL Server s stolpcem IDENTITY. Prek gonilnika Wkl OData potrebuje tabela za pisanje tudi različico vrstice, ne glede na vrsto ključa. Brez nje Access poišče zapis tako, da primerja vse stare vrednosti (UPDATE … WHERE Id = ? AND Name = ?). Storitev takšne primerjave za tabelo s ključem ne ponuja, gonilnik pa je tudi ne opusti. Zapis se zavrne zwkeSourceError: „[Wkl][OData]Die Bedingung auf 'Name' laesst sich nicht uebersetzen; … ein Vergleich mit dem alten Wert wird von diesem Dienst nicht angeboten.“ Rešitev: tabeli dodajte stolpecrowversionali pa za tabelo vklopite žig vrstice v storitvi (glejte dokumentacijo storitve). Nato tabelo znova povežite. - Ena transakcija, eno mesto. Vsa pisanja enega uporabnikovega dejanja potekajo v transakciji privzetega delovnega prostora DAO, vključno z urejevalnikom celic v
WklTreeList(BeforeUpdatezAction = wuaCellValue).CancelvBeforeUpdateali zavrnitev programa Access razveljavi celotno dejanje in znova naloži drevo. Pisanja, ki jih vaša koda izvede prekCurrentDbznotrajBeforeUpdate, spadajo v isti delovni prostor in se razveljavijo skupaj z njim.CancelvValidateCellpride pred vsakim pisanjem: urejevalnik se zapre, celica pa obdrži staro vrednost. - En vir zapisov za vsa vozlišča. Drevesa, katerega vrste vozlišč prihajajo iz več tabel prek poizvedbe UNION, ni mogoče urejati neposredno v drevesu; preslikave vrste vozlišča v tabelo ni. Takšno drevo urejajte prek obrazcev:
EditFormsza izbrano vozlišče odpre Accessov obrazec njegove vrste (sourceKeysnavaja ključ zapisa za njim,deleteFromtabelo, iz katere se briše; glejte Urejanje zapisov v Accessovem obrazcu). Lahko pa nastaviteAutoSave = Falsein spremembo shranite sami: drevo tedaj spremeni le prikaz, ne sprožiBeforeUpdate, vaša obravnavaValidateCell,AfterLabelEdit,NodeDropaliBeforeDeletepa zapiše zapis po ključu; če vaše pisanje ne uspe, tam nastaviteCancel.
Omejitve in znane težave
Zaupanje. Kontrolniki se registrirajo kot varni za skriptno izvajanje in inicializacijo, čeprav člani
zapisujejo datoteke (SaveToFile, Export…, SaveImage), odpirajo datoteke (AutoStart) in berejo datoteke,
navedene v shranjenih lastnostih (WklImage, tudi iz omrežne skupne rabe). Uporabljajte jih samo v podatkovnih
zbirkah iz zaupanja vrednih mest.
Kam na obrazec lahko postavite kontrolnik (stran posamezne komponente navaja njeno rešitev):
| Mesto | Kaj se zgodi | Rešitev |
|---|---|---|
| Odsek s podrobnostmi neprekinjenega obrazca, nevezan | Access ustvari en primerek, ki prikazuje samo trenutni zapis; druge vrstice ostanejo prazne | Stolpec v WklGrid (stanje, stikalo, žetoni, ukazi) |
| Odsek s podrobnostmi neprekinjenega obrazca, vezan (vir kontrolnika) | Access obrazca ne odpre do konca | Kot zgoraj; v glavi ali nogi obrazca vezan kontrolnik deluje |
| Za podobrazcem ali na njem | Access izriše podobrazec čez vsak kontrolnik ActiveX (tudi čez WklBadge) | Kontrolnik postavite ob podobrazec ali v lastni obrazec podobrazca |
| Poročilo | Obvestilo namesto podatkov | Ravni združevanja in podporočila; izvoz seznama |
| Onemogočen (Omogočeno = Ne) | Access onemogočenemu kontrolniku ActiveX ne dodeli okna; izriše se kot slika in se ne odziva na miško in tipke | – |
- Poročila: na poročilu seznami (
WklTreeView,WklTreeList,WklGantt,WklGrid,WklPropertyGrid) namesto podatkov prikažejo obvestilo;WklBarcodeinWklImagesta narejena za poročila (vezan kontrolnik izriše vrednost vsakega zapisa v predogledu tiskanja in v PDF); drugi kontrolniki na poročilih niso podprti. Hierarhična poročila zgradite z ravnmi združevanja in podporočili; pogled seznama prenesete ven z njegovim izvozom. - Podprto: 32- in 64-bitni Access. Moduli VBA, ki jih zapišejo komponente (
basWklRibbon, modul orodja za gradnjo, dodatek), ne deklarirajo funkcij API, zato ni treba prilagajati nobenegaPtrSafe. - Nastavitve za visok DPI niso podprte.
- Vlečenje in spuščanje deluje samo znotraj istega kontrolnika: vozlišča v
WklTreeView,WklTreeListinWklGanttse premikajo ali kopirajo znotraj lastnega drevesa; vrstic vWklGridni mogoče vleči (sprejema samo datoteke iz Raziskovalca). Vlečenje zapisov iz enega kontrolnika na drugega – na primer številnih izbranih oseb na pravilo v drugem seznamu – ni mogoče. Rešitev: uporabnik izbira zMultiSelect, vi prebereteSelectedKeysin dodelitev izvedete z ukazom (WklButton, ukaz priročnega menija aliRowCommand); ključ cilja vzamete izSelectedKeydrugega kontrolnika. Pri kopiranju vozlišč se polja s prilogami in polja z več vrednostmi ne kopirajo. AutoSavepiše samo vRecordSource, ki ga Access lahko posodablja, sKeyField, ki enolično določa en zapis; poizvedba UNION, poizvedba zGROUP BYali prepustna poizvedba ter povezana tabela brez enoličnega indeksa zavrnejo zapis ob shranjevanju spremembe, ne prej. Preslikave vrste vozlišča v tabelo ni. Drevo, naloženo izRecordsetali iz datoteke, nima vira, v katerega bi lahko pisalo nazaj. Glejte Urejanje in shranjevanje: predpogoji.Filtervezanega kontrolnika je pogoj WHERE vira podatkov in po viru poizveduje vsakič znova; pri prepustni poizvedbi se na strežniku izvede celotna poizvedba.- Access okna kontrolnika ActiveX v UI Automation ne navaja kot podrejenega elementa njegovega obrazca. Bralniki zaslona dosežejo mrežo prek fokusa; iskanje po drevesu elementov programa Access je ne najde.
NodeFormatinCellFormatse sprožita samo priFormatEvents = True. Vsak klic dogodka v Access traja nekaj milisekund, ki se seštejejo za vsako vidno vozlišče ali celico ob vsakem ponovnem izrisu.- Izvoz: XLSX, XML in JSON;
WklGanttzapisuje tudi slike, PDF in Microsoft Project XML. Druge oblike (XLS, CSV …) niso del kontrolnikov: datoteko XLSX odprite v Excelu in jo shranite v želeni obliki, ročno ali z nekaj vrsticami VBA. Izvoz v Excel v prikazani obliki izpusti podatkovne vrstice in nabore ikon, priWklGanttpa puščice odvisnosti, osnovne načrte in roke (nimajo oblike celice). WklGantt: besedilo v PDF je del slike in ga ni mogoče iskati. Microsoft Project XML sledi shemi Project 2007: ročno razporejanje, vrzeli razdeljenih opravil in videz grafikona se ne izmenjujejo. Datoteke Project sledijo Microsoftovi objavljeni shemi in obliki datotek Project 2010; odpiranje v samem programu Microsoft Project ni podprto.
Licenciranje
Kontrolniki in objekti ne vsebujejo preverjanja licence: ni licenčnega ključa, ni preverjanja v pogledu načrta in ne med izvajanjem, tudi ne v okolju Access Runtime ali na obrazcih UserForm v Excelu in Wordu. Podatkovna zbirka, ki jih uporablja, deluje v vsakem računalniku, v katerem je izdaja nameščena in registrirana (Uvajanje aplikacije s kontrolniki WKL v računalnike uporabnikov). Pogoji uporabe so tisti iz vaše pogodbe z dobaviteljem.