Vstavljanje kontrolnikov WKL v obrazce s kodo
Obrazce s kontrolniki WKL ustvarite s skriptom za gradnjo, namesto da bi kontrolnike vstavljali ročno, na primer v aplikaciji, katere obrazci nastajajo samodejno ali se kot besedilo hranijo v sistemu za nadzor različic.
Zahteva WKL Forms Object Library 1.31 ali novejšo različico.
Pregled rešitve
- Ne s CreateControl.
CreateControlzacCustomControlustvari okvir kontrolnika, ne pa objekta ActiveX: Access potrebuje shranjene podatke kontrolnika (OleData), ki jih zapiše samo Access, ko shrani obrazec s kontrolnikom. - Z gradnikom kontrolnika. Gradnik kontrolnika je razdelek
Begin CustomControl … Endobrazca, shranjenega sSaveAsText. Skript za gradnjo ga vstavi v besedilo svojega obrazca in obrazec naloži zLoadFromText; Access kontrolnik ustvari iz podatkovOleDatagradnika. - Nastavitve v pogledu načrta. Po nalaganju skript odpre obrazec v pogledu načrta in lastnosti kontrolnika nastavi prek
.Object(priWklValidatornjegova pravilaRules); Access jih shrani z obrazcem.
Vsak kontrolnik WKL ima izdan gradnik v privzetem stanju (vstavljen prek pogovornega okna Accessa, tako kot ga vstavi
razvijalec, in za izdajo shranjen z Accessom), in sicer v mapi control-blocks paketa izdaje (docs/control-blocks v
repozitoriju), po eno datoteko za vsak kontrolnik: TreeView, TreeList, Gantt, Grid, Splitter, DockLayout,
StatusLabel, NavBar, Button, Validator, ToggleSwitch, TokenBox, Badge, PropertyGrid, ButtonEdit,
SpinEdit, Gauge, KpiCard, ActionBar, Drawer, Barcode, Image (<Name>.control.txt).
Vsak gradnik je v zgornjem levem kotu svojega razdelka in ima uporabno privzeto velikost; vsak gradnik se ob vsaki
izdaji preveri tako, da se naloži v nov obrazec in ta odpre v pogledu obrazca. Orodje za gradnjo nadomestne pravokotnike
zamenja s temi gradniki (Gradnja aplikacije Access iz besedilnih izvornih datotek).
Izvedba
- Obrazec ustvarite kot običajno (
CreateForm,CreateControlza lastne kontrolnike Accessa), ga zaprite zacSaveYesin zapišite kot besedilo:Application.SaveAsText acForm, "frmIdentity", "frmIdentity.form.txt". Datoteka je v UTF-16 (Unicode), kot jo zapiše Access. - Odprite besedilo in poiščite odsek s podrobnostmi: zadnji
Begin Sectionz vrstico imena, na primerName ="Detail"(ime je odvisno od jezika Accessa). Njegovi kontrolniki so v blokuBegin … Endznotraj razdelka. Vrstice gradnika vstavite pred ta notranjiEnd, zamaknjene tako kot drugi kontrolniki. Razdelek brez kontrolnikov nima notranjega blokaBegin … End: pred lastniEndrazdelka vstaviteBegin, gradnik inEnd. - V gradniku spremenite
Name ="Validator1"v ime kontrolnika v obrazcu in za njegov položaj dodajte vrsticiLeft =…inTop =…(v twipih); gradnik ju nima, ker Access vrednosti 0 izpusti.WidthinHeightsta že v gradniku. - Besedilo zapišite nazaj v UTF-16, izbrišite obrazec (
DoCmd.DeleteObject acForm, "frmIdentity") in ga naložite:Application.LoadFromText acForm, "frmIdentity", "frmIdentity.form.txt". - Lastnosti nastavite v pogledu načrta:
DoCmd.OpenForm "frmIdentity", acDesign
Forms!frmIdentity.HasModule = True ' the validator needs a module; an empty one is enough
Forms!frmIdentity!Validator1.Object.Rules = "{""fields"":[{""field"":""Login"",""required"":true}]}"
DoCmd.Close acForm, "frmIdentity", acSaveYes
Opombe
- En gradnik za vsako vrsto kontrolnika. Gradnik vsebuje razred kontrolnika (
Class ="WklForms.…") in njegove shranjene lastnosti v privzetem stanju. Uporabite gradnike izdaje, s katero delate: gradnik starejše izdaje se naloži tudi v novejšo (nastavitve, ki mu manjkajo, dobijo privzete vrednosti). - Imena. Dva kontrolnika na istem obrazcu ne smeta imeti enakega imena;
Namespremenite pred nalaganjem.
Sorodne teme
- Referenca API (v angleščini): WklValidator