Color scheme: Light
You are here: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » how-to » WKL-Steuerelemente per Code in Formulare einfügen

WKL-Steuerelemente per Code in Formulare einfügen

Erstellen Sie Formulare mit WKL-Steuerelementen aus einem Build-Skript, statt die Steuerelemente von Hand einzufügen, etwa für eine Anwendung, deren Formulare generiert oder als Text in der Versionsverwaltung geführt werden.

Voraussetzungen: WKL Forms Object Library 1.31 oder höher.

Lösungsüberblick

  • Nicht mit CreateControl. CreateControl mit acCustomControl legt den Rahmen des Steuerelements an, aber kein ActiveX-Objekt: Access braucht die gespeicherten Daten des Steuerelements (OleData), und die schreibt nur Access selbst, wenn es ein Formular mit dem Steuerelement speichert.
  • Mit einem Steuerelementbaustein. Ein Steuerelementbaustein ist der Abschnitt Begin CustomControl … End eines mit SaveAsText gespeicherten Formulars. Das Build-Skript fügt ihn in den Text seines Formulars ein und lädt das Formular mit LoadFromText; Access erstellt das Steuerelement aus dem OleData des Bausteins.
  • Einstellungen in der Entwurfsansicht. Nach dem Laden öffnet das Skript das Formular in der Entwurfsansicht und setzt die Eigenschaften des Steuerelements über .Object (bei einem WklValidator dessen Rules); Access speichert sie mit dem Formular.

Für jedes WKL-Steuerelement gibt es einen freigegebenen Baustein im Standardzustand – über das Dialogfeld von Access eingefügt, so wie ein Entwickler es einfügt, und für das Release von Access gespeichert – unter control-blocks im Release-Paket (docs/control-blocks im Repository), eine Datei je Steuerelement: 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). Jeder Baustein liegt oben links in seinem Bereich und hat eine brauchbare Standardgröße; jeder Baustein wird für jedes Release geprüft, indem er in ein neues Formular geladen und dieses in der Formularansicht geöffnet wird. Das Build-Werkzeug ersetzt Platzhalter-Rechtecke durch diese Bausteine (Access-Anwendung aus ihren Textquellen bauen).

Umsetzung

  1. Erstellen Sie das Formular wie gewohnt (CreateForm, CreateControl für die eigenen Steuerelemente von Access), schließen Sie es mit acSaveYes, und schreiben Sie es als Text: Application.SaveAsText acForm, "frmIdentity", "frmIdentity.form.txt". Die Datei ist UTF-16 (Unicode), wie Access sie schreibt.
  2. Öffnen Sie den Text, und suchen Sie den Detailbereich: den letzten Begin Section mit seinem Name ="Detailbereich" (der Name folgt der Sprache von Access). Seine Steuerelemente stehen in einem Begin … End innerhalb des Abschnitts. Fügen Sie die Zeilen des Bausteins vor diesem inneren End ein, eingerückt wie die anderen Steuerelemente. Ein Abschnitt ohne Steuerelemente hat kein inneres Begin … End: Fügen Sie dann Begin, den Baustein und End vor dem eigenen End des Abschnitts ein.
  3. Ändern Sie Name ="Validator1" des Bausteins in den Namen des Steuerelements im Formular, und fügen Sie für seine Position Zeilen Left =… und Top =… (Twips) hinzu; der Baustein hat keine, weil Access Werte von 0 weglässt. Width und Height stehen im Baustein.
  4. Schreiben Sie den Text als UTF-16 zurück, löschen Sie das Formular (DoCmd.DeleteObject acForm, "frmIdentity"), und laden Sie es: Application.LoadFromText acForm, "frmIdentity", "frmIdentity.form.txt".
  5. Setzen Sie die Eigenschaften in der Entwurfsansicht:
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

Hinweise

  • Ein Baustein je Art von Steuerelement. Ein Baustein enthält die Klasse des Steuerelements (Class ="WklForms.…") und seine gespeicherten Eigenschaften im Standardzustand. Verwenden Sie die Bausteine des Release, das Sie einsetzen; ein Baustein eines älteren Release lässt sich auch in ein neueres laden (fehlende Einstellungen erhalten ihre Standardwerte).
  • Namen. Zwei Steuerelemente eines Formulars dürfen nicht denselben Namen haben; ändern Sie Name vor dem Laden.

Verwandte Themen

de/wiki/msaccess/comctl/how-to/insert-controls-by-code.txt · Last modified: by Wolfgang van der Stille