Color scheme: Riviera
You are here: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » WKL Forms Object Library

WKL Forms Object Library

ActiveX-Steuerelemente für Formulare in Microsoft Access, gebaut auf .NET 10: Strukturen, Datenblätter, ein Gantt-Diagramm, Layout, Navigation, Schaltflächen, Statusanzeigen, Validierung und Benachrichtigungen. Sie fügen sich in Access ein, als gehörten sie dazu: frühe Bindung mit IntelliSense, Einstellungen im Eigenschaftenblatt und in einem Designerfenster, Ereignisse im Formularmodul, feste Fehlernummern und Betrieb in ACCDB, ACCDE und Access Runtime. Diese Dokumentation richtet sich an Access- und VBA-Entwickler, die die Steuerelemente auf Formularen einsetzen, und an Administratoren, die sie auf den PCs der Benutzer einer Anwendung installieren. Aktuelles Release: 2.0.0 – die Änderungen jedes Release stehen in der Datei CHANGELOG.md des Release-Pakets. Bis Release 1.68.2 hieß die Bibliothek WKL Access Components.

Das Problem, das die Komponenten lösen

Die Steuerelemente, die Access in der Entwurfsansicht anbietet (Textfeld, Kombinations- und Listenfeld, Unterformular, Registersteuerelement, Schaltfläche und ähnliche), genügen für die klassische Datenerfassung. Es fehlt aber vieles, was Benutzer heute von Geschäftssoftware erwarten: eine an eine Tabelle gebundene Struktur, ein Datenblatt, das wie ein modernes Raster gruppiert, filtert und summiert, ein Gantt-Diagramm, eine Navigationsleiste, angedockte Bereiche, die der Fenstergröße folgen, Status-Chips, Benachrichtigungen (Toasts). Access-Entwickler schließen die Lücke mit Behelfslösungen – verschachtelte Unterformulare, Endlosformulare mit bedingter Formatierung, das ungebundene Microsoft-TreeView der Common Controls, das per VBA befüllt wird. Solche Lösungen kosten in jeder Anwendung eigenen Code und sehen trotzdem anders aus als der Rest von Office – und verhalten sich auch anders.

Komponentensammlungen wie DevExpress WinForms oder Telerik UI for WinForms lösen das für .NET-Anwendungen mit Windows-Forms-Steuerelementen. Ein Access-Formular nimmt aber nur ActiveX-Steuerelemente auf; diese Sammlungen lassen sich dort also nicht einsetzen. Die WKL Forms Object Library bringt vergleichbare Fähigkeiten als ActiveX-Steuerelemente nach Access, die den Konventionen von Access folgen: RecordSource, LinkMasterFields, Requery, das Eigenschaftenblatt, Ereignisse im Formularmodul, ACCDE und die Runtime.

Einsatzfälle

SituationSteuerelement
Eine Hierarchie aus einer Tabelle zeigen (Organisation, Stückliste, Ordner) und per Drag & Drop bearbeitenWklTreeView, WklTreeList
Eine Liste von Datensätzen mit Gruppierung, Filterzeile, Summen, Master-Detail und einer Million Zeilen von einem ServerWklGrid
Einen Datensatz als Eigenschaftenliste neben einer Liste bearbeitenWklPropertyGrid
Vorgänge mit Abhängigkeiten und einem Arbeitskalender planen, Pläne mit Microsoft Project austauschenWklGantt
Ein Anwendungsrahmen mit Navigation links, Kopfbereich mit Befehlen und Seiten, die das Fenster füllenWklNavBar, WklActionBar, WklDockLayout
Eingaben vor dem Speichern des Datensatzes gegen Regeln prüfen, mit der Meldung neben dem FeldWklValidator
Tabellen mit Entwicklungs-, Test- und Produktionsservern verknüpfen und zwischen ihnen umschaltenWklLinkManager
Eine Messreihe mit ihren Grenzwerten und ihrem Trend zeigen, oder Anzahlen je MonatWklChart
Zeigen, wo etwas geschieht: Anmeldungen je Stadt, Standorte oder Kunden auf einer WeltkarteWklMap
Suchen, während der Benutzer tippt, einen Zähler alle 30 Sekunden aktualisieren, viele Webanfragen im Takt eines Dienstes sendenWklTimerList
Eine Kennzahl, einen Status oder eine Anzahl messen und anzeigenWklGauge, WklStatusLabel, WklBadge

Was die Komponenten nicht leisten: Sie ersetzen nicht die Access-Steuerelemente für einfache Eingabefelder, sie arbeiten in Access-Berichten nicht als Listen (eine Liste zeigt dort einen Hinweis), und sie sind keine Windows-Forms-Steuerelemente für .NET-Anwendungen.

Erste Schritte

Häufige Aufgaben

Schaubild

graph TD
    P["1 – Release-Paket: x86 oder x64, tools, addin, control-blocks"]
    F["2 – PC, je Windows-Benutzer: lokaler Ordner (ohne Administratorrechte)"]
    A["3 – Access: Dialog ActiveX-Steuerelemente listet WKL Grid, WKL TreeView …; Verweis WKL Forms x.y Object Library"]
    R["4 – Formular mit WKL-Steuerelementen: Eigenschaftenblatt, Designer, Ereignisse im Formularmodul"]
    P -- "kopieren" --> F
    F -- "registrieren: regsvr32 /n /i:user" --> A
    A -- "Steuerelement einfügen" --> R
BereichBedeutung
1Das Release: die Steuerelemente in der Bitversion von Office, das Build-Werkzeug, das Add-In WKL Extensions und die Steuerelementbausteine
2Die Dateien, in einen dauerhaften Ordner kopiert und für den aktuellen Windows-Benutzer registriert
3Access bietet die Steuerelemente und die Typbibliothek an; beim Einfügen eines Steuerelements setzt Access den Verweis selbst
4Jedes Steuerelement auf dem Formular konfigurieren Sie im Eigenschaftenblatt, in seinem Designer oder mit VBA

Wichtige Funktionen

Die Steuerelemente platzieren Sie auf Access-Formularen (oder UserForms); die mit (Objekt) gekennzeichneten Komponenten erzeugen Sie in VBA, sie haben kein eigenes Fenster.

Datenansichten

Datensätze aus Tabellen und Abfragen anzeigen und bearbeiten.

KomponenteZweckDokumentation
WklGridEin flaches Datenblatt mit Gruppierung, Spaltenfiltern, Master-Detail, Detailansichten, einem Servermodus für große Tabellen und einer Listenansicht.Überblick · Referenz (Englisch)
WklTreeViewEine Struktur, gebunden an eine Tabelle, eine Abfrage oder eine SQL-Anweisung, mit Bearbeiten, Drag & Drop, Suche und Filter.Überblick · Referenz (Englisch)
WklTreeListEin hierarchisches Datenblatt: die Struktur mit Spalten, Zelleneditoren, Formatierung, Summen und Export nach Excel.Überblick · Referenz (Englisch)
WklGanttEin Gantt-Diagramm auf dem Datenblatt, mit Abhängigkeiten, einem Arbeitskalender, Terminplanung und Austausch mit Microsoft Project.Überblick · Referenz (Englisch)
WklPropertyGridEin Datensatz als Zeilen „Beschriftung · Wert“ in Kategorien, für ein eigenes Formular oder als Detail.Überblick · Referenz (Englisch)
WklChartEin Linien-, Punkt-, Säulen- oder Balkendiagramm einer Tabelle oder Abfrage, das dem aktuellen Datensatz folgt, mit Grenzwerten, Bändern und einem Trend.Überblick · Referenz (Englisch)
WklMapPunkte auf einer Weltkarte aus einer Tabelle oder Abfrage, Fläche und Farbe nach einem Wert; folgt dem aktuellen Datensatz und arbeitet ohne Kartendienst.Überblick · Referenz (Englisch)

Dateneditoren

Einzelne Werte auf einem Formular, gebunden wie ein Access-Steuerelement.

KomponenteZweckDokumentation
WklToggleSwitchEin Ja/Nein-Schalter mit sofortiger Wirkung, gebunden wie ein Kontrollkästchen.Überblick · Referenz (Englisch)
WklTokenBoxMehrere Werte eines Datensatzes als Token mit Vorschlägen, gespeichert in einer untergeordneten Tabelle.Überblick · Referenz (Englisch)
WklButtonEditEin Textfeld mit einer Schaltfläche am rechten Rand, gebunden wie ein Textfeld, für Werte aus einem Dialog oder einer Prüfung.Überblick · Referenz (Englisch)
WklSpinEditEine Zahl mit Pfeilen nach oben und unten, Grenzen, einer Schrittweite und einer Einheit, gebunden wie ein Textfeld; auch als Listenspalte (wedSpin).Überblick · Referenz (Englisch)
WklValidatorPrüft die Textfelder eines Access-Formulars gegen Regeln und verhindert, dass ein fehlerhafter Datensatz gespeichert wird.Überblick · Referenz (Englisch)

Layout

Bereiche eines Formulars anordnen, teilen und ein- oder ausklappen.

KomponenteZweckDokumentation
WklDockLayoutOrdnet die Bereiche eines Formulars bei jeder Größenänderung des Formulars in Zonen an, mit Trennleisten und Registergruppen.Überblick · Referenz (Englisch)
WklSplitterEine Trennleiste zwischen zwei Bereichen eines Formulars, mit der der Benutzer die Aufteilung verschiebt oder eine Seite einklappt.Überblick · Referenz (Englisch)
WklDrawerEin Bereich am rechten Rand eines Formulars, der sich neben einer Liste öffnet; jeder Inhalt hat seine eigene Breite, die Steuerelemente darin sind verankert.Überblick · Referenz (Englisch)

Durch eine Anwendung navigieren und ihre Befehle ausführen.

KomponenteZweckDokumentation
WklNavBarDie Navigationsleiste eines Anwendungsrahmens, per Code oder aus einer Navigationstabelle gefüllt.Überblick · Referenz (Englisch)
WklActionBarDer Kopfbereich einer Seite oder eines Anwendungsrahmens: Titel, Untertitel, Status und eine Befehlszeile mit geteilten Schaltflächen und Tastenkombinationen; was nicht in die Zeile passt, wandert in ein Überlaufmenü.Überblick · Referenz (Englisch)
WklButtonEine Befehls-, Menü-, geteilte oder Segmentschaltfläche im Erscheinungsbild des aktuellen Office.Überblick · Referenz (Englisch)
WklRibbon (Objekt)Menübänder, Backstage-Ansicht „Datei“ und Kontextmenüs einer Datenbank aus einer einzigen Befehlsliste, mit Designer und Bedingungen.Überblick · Referenz (Englisch)
WklNavPane (Objekt)Der eigene Navigationsbereich von Access als eine Kategorie mit Gruppen, Anzeigenamen, Startgruppe und Bedingungen, mit Designer.Überblick · Referenz (Englisch)

Status und Rückmeldung

Dem Benutzer Zustände, Zahlen und Ergebnisse zeigen.

KomponenteZweckDokumentation
WklStatusLabelEin Status in einer Zeile – Text mit einer Art, die seine Farben bestimmt –, gebunden wie ein Textfeld.Überblick · Referenz (Englisch)
WklBadgeEine Anzahl oder ein Punkt an einer Ecke einer Access-Schaltfläche, eines Bezeichnungsfelds oder eines Textfelds.Überblick · Referenz (Englisch)
WklToast (Objekt)Kurze Benachrichtigungen nach einer Aktion, mit einer optionalen Aktion wie Rückgängig.Überblick · Referenz (Englisch)
WklGaugeEin Wert auf einer Skala mit farbigen Bereichen: Halb- oder Dreiviertelkreis, waagerechter oder senkrechter Balken, mehrere Balken mit Legende.Überblick · Referenz (Englisch)
WklKpiCardEine Kennzahl für eine Startseite: Wert, Abweichung von einem Vergleichswert, Status, Sparkline, Badge; anklickbar wie eine Kachel.Überblick · Referenz (Englisch)

Medien

Barcodes, QR-Codes und Bilder auf Formularen und in Berichten.

KomponenteZweckDokumentation
WklBarcodeEin QR-Code, Code-128- oder Data-Matrix-Symbol aus einem Text, gebunden wie ein Textfeld; in Berichten ein Code je Datensatz.Überblick · Referenz (Englisch)
WklImageEin Bild aus einer Datei, dem Bildkatalog der Datenbank, SVG-Text oder einem Feld; SVG bleibt in jeder Größe scharf, einfarbige Symbole übernehmen die Farbe des Formulars.Überblick · Referenz (Englisch)

Anwendung und Verbindungen

Die Anwendung als Ganzes und ihre Datenquellen.

KomponenteZweckDokumentation
WklApplication (Objekt)Titel, Symbol, Startformular, Menüband und die Benutzeroberfläche jeder Betriebsart (Entwicklung, Verwaltung, Produktion) als Starteigenschaften, mit Einstellungen, die ein Betreiber anpassen darf.Überblick · Referenz (Englisch)
WklLinkManager (Objekt)Hält die verknüpften ODBC-Tabellen eines Frontends mit einer Konfiguration je Profil (DEV, TEST, PROD) in Einklang.Überblick · Referenz (Englisch)
WklTimerListGeplante Aufgaben eines Formulars: verzögerte Suchen, regelmäßige Prüfungen und eine getaktete Warteschlange von Webanfragen, ohne DoEvents-Schleife.Überblick · Referenz (Englisch)
WklTexts (Objekt)Die eigenen Texte der Anwendung nach Schlüssel in der Sprache der Komponenten, aus der Tabelle USysWklTexts; Standardtexte wie OK, Abbrechen und Speichern in allen fünf Sprachen.Anleitung · Referenz (Englisch)

FindNodes, JPath-Filter und AsJSON nutzen die JSON-Engine von WKL Office JSON, die im Release-Paket enthalten ist. Für einen schnellen Einstieg enthält das Paket außerdem eine Vorlage für den Anwendungsrahmen mit Navigationsleiste, Seite im Unterformular und Befehlsleiste (unter templates\app-shell).

Grundkonzepte

Drei Wege, ein Steuerelement zu konfigurieren. Das Eigenschaftenblatt (Registerkarte Andere), das Designerfenster des Steuerelements (Designer eines Steuerelements öffnen) und VBA über die Eigenschaft Object des Steuerelements (Me!Tree1.Object.RecordSource = …). Alle drei setzen dieselben Eigenschaften, die Access mit dem Formular speichert.

Ereignisse im Formularmodul. Ein Steuerelement löst seine Ereignisse im Modul des Formulars aus, auf dem es sitzt. Auf der Registerkarte Ereignis des Eigenschaftenblatts führt Access sie nicht auf; die Prozeduren legen Sie über die Designerseite Ereignisse oder die Listen des Codefensters an (Ereignisprozeduren für ein Steuerelement anlegen).

An die Daten gebunden wie ein Access-Steuerelement. Die Listen lesen eine RecordSource (Tabelle, Abfrage oder SQL-Anweisung) und schreiben Änderungen des Benutzers sofort zurück (AutoSave); für eine Struktur genügen RecordSource, KeyField, ParentField und TextField. Was die Datenherkunft zulassen muss, beschreibt Bearbeiten und Speichern: Voraussetzungen. In der Entwurfsansicht liest ein Steuerelement seine Datenquelle nur, wenn LivePreview auf True steht (Echte Daten in der Entwurfsansicht anzeigen).

Feste Fehlernummern. Die Steuerelemente lösen Fehler mit festen Nummern aus (Konstanten von WklErrorCode) und setzen Err.Source = "WklForms"; Texte, die Benutzer sehen, erscheinen in der Sprache der Komponenten (Fehler von WKL-Steuerelementen in VBA behandeln).

Sprache. Designer, Meldungen, Err.Description, Kontextmenüs und die Namen für Sprachausgaben sind Englisch, Deutsch, Slowenisch, Kroatisch oder Italienisch: in der Sprache des Anwendungsmodells, sonst der von Office, sonst der von Windows, sonst Englisch. Fehlernummern, Eigenschaftsnamen, gespeicherte Werte und IntelliSense sind in jeder Sprache gleich; Datums- und Zahlenformate folgen den Regionaleinstellungen von Windows (Sprache der Komponenten festlegen).

Farben. Jedes Steuerelement hat ein Farbschema (ColorScheme). Die Standardeinstellung Automatisch folgt zuerst dem hohen Kontrast von Windows, dann den Designfarben der Access-Datenbank (zum Beispiel „Riviera“) und verwendet sonst eine helle Palette; hell, dunkel und hoher Kontrast lassen sich auch fest einstellen. Die Steuerelemente folgen nicht dem Office-Design (Farbig, Dunkelgrau, Schwarz), das Office je Benutzerkonto speichert (Farben des Datenbankdesigns übernehmen).

Eine Typbibliothek, versioniert mit ihrer Schnittstelle. Eine Datenbank verweist auf die Typbibliothek WKL Forms Object Library und verwendet beim Öffnen die Version, die auf dem PC registriert ist; siehe Versionen.

Administration

Fehlerbehebung

Jede Seite beschreibt das Symptom, die betroffenen Versionen, die Ursache und die Lösung.

BereichSeiten
InstallationDie .NET 10 Desktop Runtime ist nicht installiert · Ein WKL-Steuerelement oder der Verweis fehlt (falsche Bitversion) · Access meldet, dass eine andere .NET-Version geladen ist · Die Anwendung öffnet sich, aber ihr Code läuft nicht
Alle SteuerelementeTexte erscheinen in einer anderen Sprache als erwartet · Eine Ereignisprozedur wird nie aufgerufen · Access reagiert nach einem Löschen oder einem Fehler nicht mehr · Das Lesen einer verknüpften ODBC-Tabelle kehrt nie zurück · Das Steuerelement zeigt einen Fehlertext statt der Knoten · Die Entwurfsansicht zeigt Beispielknoten statt der Daten · Die Ereignisse des Steuerelements fehlen auf der Registerkarte „Ereignis“ · „Methode oder Datenobjekt nicht gefunden“ für ein Steuerelement auf einer UserForm · Kopieren und Einfügen scheitern nach vielen Access-Sitzungen · UI Automation findet nur das Access-Formular, nicht das WKL-Steuerelement
Bearbeiten und SpeichernEine Zelle lässt sich nicht bearbeiten · Änderungen in der Struktur werden nicht gespeichert · Ein Datendienst lehnt eine Änderung ab · Das Formular wird nach der Behandlung von NodeFormat oder CellFormat langsam
WklGridSummen bleiben im Servermodus leer · Ein Access-Unterformular folgt dem Raster nicht
WklGanttDie Zeitleiste zeigt keine Balken · Import einer Project-Datei fügt die Vorgänge erneut hinzu
WklLinkManagerDer Linked Tables Manager kann das Profil nicht bestimmen · Tabellen werden beim Start nicht verknüpft · Der Add-In-Eintrag fehlt
LayoutEin Steuerelement wird vom Layout nicht angeordnet · Das Layout bleibt breit, nachdem das Fenster verkleinert wurde
WklNavBarDie Navigationsleiste öffnet in einem anderen Modus als entworfen · Die Tastenkombination der Navigationsleiste bewirkt nichts · Einträge der Navigationstabelle fehlen
WklNavPane, WklRibbon, WklApplicationDer Navigationsbereich zeigt mehr als das Modell · Das Menüband erscheint nach dem Speichern nicht · Eine Startoption wirkt nicht
WklStatusLabelDie Statusanzeige zeigt nichts oder die falsche Farbe
WklButton, WklToggleSwitchEine deaktivierte Schaltfläche oder ein deaktivierter Schalter wird nicht gezeichnet
WklValidatorDer Validator prüft nichts · Ein abgelehntes Speichern erscheint nicht in der Zusammenfassung des Validators
WklTokenBoxDem Token-Feld lassen sich keine Tokens hinzufügen
WklToastDie Aktion einer Benachrichtigung bewirkt nichts, oder es erscheint keine Benachrichtigung
WklBadgeDas Badge erscheint nicht oder nicht an seinem Ziel

Für Entwickler

Verwandte Themen

  • CHANGELOG.md im Release-Paket – was jedes Release geändert hat
  • Vorlage für den Anwendungsrahmen (im Paket unter templates\app-shell, beschrieben in der README dort) – der Rahmen einer Anwendung, gebaut vom Build-Werkzeug

Referenz

Versionen

Die Steuerelemente teilen sich eine Typbibliothek, WKL Forms Object Library, deren Version mit jeder Änderung der Schnittstelle steigt. Ein Release hat die Version x.y.z: x.y ist die Version der Typbibliothek, z zählt Korrekturen, die die Schnittstelle nicht ändern. Die Änderungen jedes Release stehen in der Datei CHANGELOG.md des Release-Pakets; das aktuelle Release ist 2.0.0.

Steuerelement oder ObjektSeit Release
WklTreeView, WklTreeList, WklGantt, WklGrid, WklSplitter, WklDockLayout, WklStatusLabel, WklLinkManager1.23.0
WklNavBar1.24.0 (Navigationstabelle: 1.26.0)
WklButton1.26.0 (geteilte und Segmentschaltflächen, Badge: 1.27.0)
WklValidator1.31.0
WklToggleSwitch1.32.0
WklTokenBox1.33.0
WklToast1.34.0
WklBadge1.35.0
Listenansicht von WklGrid1.36.0
Registergruppen von WklDockLayout1.37.0
WklPropertyGrid1.38.0
WklButtonEdit, WklSpinEdit1.43.0
WklGauge, WklKpiCard1.44.0
WklActionBar1.46.0
ColorScheme jedes Steuerelements und von WklToast; EditOnClick der Raster1.47.0
WklDrawer1.48.0
WklRibbon und der Menüband-Designer1.49.0
WklNavPane, der Designer für den Navigationsbereich und die Vorlage für den Anwendungsrahmen1.50.0
WklApplication, der Anwendungsdesigner, appModel und deploy des Build-Werkzeugs1.51.0
WklBarcode, WklImage; die öffentliche Dokumentation im Release-Paket1.52.0
Kontextmenüzuordnungen von WklRibbon (ShowAssignments, ApplyAssignments, EnsureMenus), integrierte Befehle über idMso1.53.0
Benutzeroberfläche in Englisch, Deutsch, Slowenisch, Kroatisch und Italienisch; Sprache je Anwendung (language im Anwendungsmodell)1.54.0
Fenster breiter als 22 Zoll: WklDockLayout mit Verankerungen aus dem Entwurf, WKL-Steuerelemente in Seiten über 22 Zoll hinaus; der Anwendungsrahmen füllt breite Fenster1.54.1
Vertrauensprüfung einer Anwendungsdatei (WklApplication.CheckTrust, TrustReport, Test-AccessTrust.ps1), WklApplication.Version und Build, INSTALL.txt in jedem Auslieferungsordner des Build-Werkzeugs1.55.0
Bootstrapper 1.0 im Paket (bootstrapper\), Navigationstabelle USysWklShellNavigation der Rahmenvorlage, Riviera-Farbtabelle (themes\riviera.md)1.56.0
Rahmenvorlage: AppShell_CanClose und AppShell_Closed beim Schließen des Rahmens, Einträge der Navigationsleiste ohne Seite gehen an AppShell_Command; die Anleitung zum Ablaufprotokoll leert den Registrierungsschlüssel nicht mehr1.56.1
Texte, auf die ein Wert folgt, behalten ihr Leerzeichen in Englisch, Slowenisch, Kroatisch und Italienisch; Bootstrapper 2.0 und registration.json im Paket1.56.2
Dateien und Ordner, die aus dem Datei-Explorer auf WklGrid, WklTreeList, WklGantt und WklTreeView abgelegt werden (AllowFileDrop, FileDragOver, FileDrop); Meldungen des Startmoduls in fünf Sprachen1.57.0
WklActionBar.Logo (ein Bild am linken Rand des Bands, AppShell_Logo() in der Rahmenvorlage); Untertitel der Rahmenvorlage sichtbar; von Hand geschriebene Menübänder werden in den Menüband-Designer übernommen1.58.0
WklActionBar.SubtitleForeColor (eine eigene Farbe für den Untertitel; -1 folgt ForeColor), AppShell_SubtitleColor() in der Rahmenvorlage1.59.0
Korrekturen: Fehlermarkierungen der Raster immer rot, Ja/Nein in der ersten Spalte eines Rasters als Kontrollkästchen, CommandStateChange nach einem Zustand, den das Programm gelesen hat, Tasten erreichen das fokussierte untergeordnete Fenster eines Steuerelements, Warnung des Build-Werkzeugs, wenn ein Verweis eine neuere Version aufzeichnet als angegeben1.59.1
Korrekturen: CommandStateChange auch für ein Raster ohne eigenes Fenster (in einem Bereich eines WklDockLayout unter einer ausgeblendeten Runtime); Dokumentation nach Art der Komponente gegliedert1.59.2
WklTimerList (verzögerte und regelmäßige Aufgaben, eine getaktete Warteschlange von Webanfragen), WklChart1.60.0
Formatregel wrkColorScale (Heatmap); WklChart und Anzeigen in Berichten mit PrintStyle; Shell-Vorlage als SDK-Projekt; Korrekturen: Reihenfolge der Gruppen in WklTreeList bei Sortierung nach der Baumspalte, Bildschirmposition der Einträge in der Listenansicht von WklGrid1.62.0
WklMap; Korrektur: die COM-Ablaufverfolgung schreibt keine Feldwerte mehr1.63.0
Spaltenfilter in WklTreeList und WklGantt (Filterzeile, Werteliste im Spaltenkopf, Filterleiste, FilterIncludesChildren); Korrektur: WklGrid.ColumnFilterValues mit mehreren Werten1.64.0
Korrektur: Access stürzt nicht mehr einige Minuten, nachdem VBA die Zugriffstaste eines WklButton oder einer WklActionBar in der Formularansicht geändert hat, ab1.64.1
WklTexts (Texte der Anwendung nach Schlüssel in der Sprache der Komponenten, Standardtexte wkl.*, Sprache für eine Testsitzung)1.65.0
Beschriftungen mit Schlüssel (@orders.title) in WKL-Steuerelementen und im Menüband-Modell; WklTexts.Localize für Formulare und Berichte, WklTexts.CaptionText1.66.0
Neutrale Texte, Anwendungstexte in beliebigen Sprachen, Sprachordner i18n (WklTexts.Folder, auch für Excel und Word)1.67.0
Korrekturen: WklDockLayout legt keinen Bereich mehr über seine Nachbarn, wenn ein Bereich mehr Platz verlangt, als das Fenster bietet, und mit FillSection bleibt Access in diesem Fall nicht mehr beschäftigt1.67.2
Korrekturen: WklDockLayout verbreitert auch ein Formular in einem Unterformular-Steuerelement, wenn ein Bereich mehr Platz verlangt, als das Fenster bietet; das Paket enthält den Steuerelementblock von WklMap1.67.3
WklMap: Kartenausschnitt (Extent, VisibleExtent), Zoomen und Verschieben durch den Benutzer (AllowZoom, ExtentChanged), feinere Grenzen für eine Region, ein eigenes Farbfeld (ColorField, ColorRange, ColorFormat); Korrektur: WklTexts und die übrigen mit CreateObject erzeugten Objekte finden Access auch, während das Startformular öffnet1.68.1
Korrekturen: Strg+C, Strg+X, Strg+V und Strg+Z wirken in den Zelleditoren von WklGrid, WklTreeList und WklPropertyGrid und in den übrigen Textfeldern der Steuerelemente; Strg+C auf einer Zelle kopiert Zelle oder Auswahl; eine Auswahlliste öffnet sich nur unter ihrer Zelle1.68.2
WKL Access Components heißt jetzt WKL Forms Object Library (Verweis WKL Forms 1.68 Object Library; ProgIDs, Dateien und Typbibliothek unverändert); die Steuerelemente melden diesen Namen als Anwendungsnamen (OLEClass); Werkzeuge des Add-ins mit englischen Namen; Meldungen für ihre Leser überarbeitet1.68.3
Hauptversion 2: Die Bibliothek heißt WklForms (Verweis WKL Forms 2.0 Object Library, ProgIDs WklForms.*, Startmodul Wkl.Forms.ObjectLibrary.dll); Klassen-IDs und Member von 1.68 unverändert; die Registrierung von 2.0 entfernt 1.x (Anwendung auf Release 2.0 umstellen)2.0.0

Welche Version registriert ist. Je Bitversion ist immer nur eine Version registriert: Das Registrieren eines Releases entfernt für diesen Benutzer die Registrierung jeder anderen Version der Bibliothek, sodass eine Datenbank nie eine ältere Kopie aufgreift. So stellen Sie die Version fest:

  • Im VBA-Editor zeigt Extras › Verweise für eine Datenbank, die die Steuerelemente verwendet, WKL Forms x.y Object Library an.
  • In 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
  • Die Komponenten nennen ihr Release selbst: WklApplication.Version gibt es zurück (1.55.0), WklApplication.Build das Release, ein Pluszeichen und die vollständige Commit-ID der Quellen (1.55.0+ce4b826c...). Nennen Sie Build in jedem Fehlerbericht.
  • In den Dateieigenschaften (Registerkarte Details) zeigt Wkl.Forms.ObjectLibrary.dll das Release als Datei- und Produktversion, Wkl.Forms.ObjectLibrary.Managed.dll das Release mit der Commit-ID als Produktversion. Ein Build aus Quellen, die nicht committet wurden, trägt keine Kennzeichnung; ein Release-Paket wird immer aus dem Commit gebaut, den sein Tag nennt.

Kompatibilitätszusage. Einmal veröffentlicht, ändern sich Member mit ihren DISPIDs und Klassen mit ihren GUIDs nie mehr und werden nie entfernt; neue Releases fügen nur hinzu, und jede Ergänzung erhöht die Version der Typbibliothek. Formulare speichern die Einstellungen ihrer WKL-Steuerelemente im Formular (OleData), und ein neueres Release liest die Einstellungen, die ein älteres gespeichert hat; Einstellungen, die ein neueres Release hinzufügt, erhalten in Formularen aus einem älteren Release ihren Standardwert. Ein Korrektur-Release (z) ändert keinen Member.

Eine Datenbank mit einem Verweis auf eine ältere Version arbeitet mit einer neueren Registrierung derselben Hauptversion weiter: Access löst den Verweis beim Öffnen der Datenbank auf die registrierte Bibliothek auf. Mit Release 2.0 beginnt eine neue Hauptversion mit dem Bibliotheksnamen WklForms; eine gegen 1.x gebaute Datenbank wird einmal umgestellt (Anwendung auf Release 2.0 umstellen). Kompilieren Sie sie erneut (Debuggen › Kompilieren) und erstellen Sie eine neue ACCDE, bevor sie Member des neueren Releases verwendet. Umgekehrt funktioniert es nicht: Eine Datenbank, die gegen ein neueres Release gebaut wurde, läuft nicht mit einer älteren Registrierung – der Verweis ist unterbrochen (NICHT VORHANDEN), und Access meldet Fehler 459 oder dass die Objektbibliothek nicht registriert ist. Installieren Sie zuerst die Komponenten, dann die Datenbank (Anwendung mit WKL-Steuerelementen auf Benutzer-PCs verteilen). Bei UserForms in Excel und Word ist es anders: Office behält ab der ersten Verwendung eine Kopie der Bibliothek je Version; deshalb erhöht jede Änderung der Schnittstelle die Version.

Hauptversion 2.0. Zugesichert ist die Auflösung eines Verweises auf eine neuere Registrierung nur innerhalb seiner Hauptversion. Access bindet den Verweis einer Datenbank für 1.x über dieselbe Bibliotheks-ID zwar auch an Release 2.0, die ProgIDs WklComponents.* sind dann aber nicht mehr registriert. Release 2.0 hat den Namen der Bibliothek von WklComponents in WklForms geändert, die ProgIDs von WklComponents.* in WklForms.* und das Startmodul in Wkl.Forms.ObjectLibrary.dll. Member, DISPIDs und GUIDs sind dieselben wie in 1.68, Formulare behalten ihre Steuerelemente. Eine Anwendung für 1.x stellen Sie einmal um (Anwendung auf Release 2.0 umstellen).

Unterstützte Umgebungen

Unterstützung je Steuerelement, jeweils in Microsoft 365 Access:

Steuerelement oder ObjektACCDBACCDEAccess RuntimeUserForms in Excel und Word
WklTreeView, WklTreeListUnterstütztUnterstütztUnterstütztGrundlegende Nutzung
WklGantt, WklGridUnterstütztUnterstütztUnterstütztGrundlegende Nutzung
WklSplitter, WklDockLayoutUnterstütztUnterstütztUnterstütztGrundlegende Nutzung
WklStatusLabel, WklNavBar, WklButtonUnterstütztUnterstütztUnterstütztGrundlegende Nutzung
WklToggleSwitch, WklTokenBox, WklBadge, WklToastUnterstütztUnterstütztUnterstütztGrundlegende Nutzung
WklValidatorUnterstütztUnterstütztUnterstütztNicht unterstützt (prüft Access-Formulare)
WklLinkManagerUnterstütztUnterstütztUnterstütztNicht unterstützt (verknüpft Access-Tabellen)
WklPropertyGridUnterstütztUnterstütztUnterstütztGrundlegende Nutzung
WklButtonEdit, WklSpinEditUnterstütztUnterstütztUnterstütztGrundlegende Nutzung
WklGauge, WklKpiCardUnterstütztUnterstütztUnterstütztGrundlegende Nutzung
WklActionBarUnterstütztUnterstütztUnterstütztGrundlegende Nutzung
WklDrawerUnterstütztUnterstütztUnterstütztNicht unterstützt (platziert ein Access-Unterformularsteuerelement)
WklRibbon (einschließlich Kontextmenüzuordnungen)UnterstütztUnterstütztUnterstütztNicht unterstützt (Access-Menübänder)
WklNavPaneUnterstütztUnterstütztUnterstützt (schreibt die Zeilen; die Runtime zeigt keinen Navigationsbereich)Nicht unterstützt (Navigationsbereich von Access)
Vorlage für den AnwendungsrahmenUnterstütztUnterstütztUnterstütztNicht unterstützt (Access-Formulare)
WklApplicationUnterstütztUnterstütztUnterstütztNicht unterstützt (Starteigenschaften von Access)
WklBarcode, WklImage (auch in Berichten: Seitenansicht und PDF)UnterstütztUnterstütztUnterstütztGrundlegende Nutzung
WklTimerListUnterstütztUnterstütztUnterstütztGrundlegende Nutzung
WklChartUnterstütztUnterstütztUnterstütztGrundlegende Nutzung (ohne Daten: es liest über Access)

„Grundlegende Nutzung“ in UserForms von Excel und Word bedeutet: Das Steuerelement lässt sich auf einer UserForm einfügen, an seine Daten binden, aus VBA verwenden und mit der UserForm speichern; jede weitere Nutzung auf UserForms wird nicht unterstützt.

Bearbeiten und Speichern: Voraussetzungen

WklTreeView, WklTreeList, WklGantt und WklGrid schreiben eine Änderung des Benutzers – ein Umbenennen, ein Verschieben, eine Zelle, ein Häkchen, einen neuen, kopierten oder gelöschten Datensatz – sofort in die RecordSource (AutoSave = True, Standardwert). Ob das gelingt, hängt von der Datenherkunft ab.

  • Die Datenherkunft muss in Access aktualisierbar sein – prüfen Sie, ob Sie in ihrem Datenblatt einen Wert ändern können. Eine Tabelle, eine Auswahlabfrage auf eine Tabelle und SQL-Text als RecordSource speichern; eine UNION-Abfrage, eine Abfrage mit GROUP BY, eine Pass-Through-Abfrage und eine verknüpfte ODBC-Tabelle ohne eindeutigen Index lehnen mit dem Fehler wkeSourceError (&H80040302) ab: „Die Änderung (Umbenennen) am Knoten 2 konnte nicht in “qUnion” gespeichert werden: Aktualisieren nicht möglich; Datenbank oder Objekt ist schreibgeschützt.“ Nichts wird gespeichert, und der Knoten behält seinen Text aus der Herkunft.
  • Felder, die die Herkunft nicht schreiben kann, öffnen keinen Editor (WklGrid, WklTreeList, WklGantt, WklPropertyGrid): Mit AutoSave = True fragt die Liste die Herkunft einmal ab – Updatable und DataUpdatable von DAO, AutoWert-Felder und bei einer verknüpften ODBC-Tabelle den Treiber (IDENTITY-, berechnete und rowversion-Spalten). Solche Zellen verhalten sich wie ReadOnly. Mit AutoSave = False wird nichts abgeschaltet, weil die Anwendung die Änderung selbst schreibt. Hinzufügen, Löschen, Umbenennen in WklTreeView und Ziehen bleiben eingeschaltet: Die Ablehnung zeigt sich erst beim Speichern der Änderung. Bei einer Änderung des Benutzers wird die Transaktion zurückgesetzt, die Struktur neu geladen, DataError tritt mit dem obigen Text ein, und es folgt ein Meldungsfenster, sofern DataError den Parameter Response nicht auf acDataErrContinue (0) setzt. Für eine Herkunft, die sich nicht aktualisieren lässt, schalten Sie das Bearbeiten ab: AllowEditing = False (LabelEdit = False in WklTreeView), AllowAdditions = False, AllowDeletions = False und kein Drag & Drop.
  • KeyField muss genau einen Datensatz kennzeichnen. Der Datensatz wird über seinen Schlüssel gefunden: bei einer Tabelle oder Abfrage per SQL (SELECT * FROM [source] WHERE [key] = …), bei SQL-Text mit FindFirst im Dynaset. Ein Schlüssel, der doppelt vorkommt, lehnt das Schreiben mit wkeDuplicateKey (&H80040303) ab: „Der Schlüssel 2 kommt in der Datenherkunft mehrfach vor. KeyField muss jeden Datensatz eindeutig kennzeichnen.“ Nichts wird gespeichert. Ein zusammengesetzter Schlüssel lautet KeyField = "OrderID;LineNo"; seine Felder gehen mit AND in dieselbe Bedingung ein.
  • Verknüpfte ODBC-Tabellen (SQL Server, Wkl OData) brauchen in Access einen eindeutigen Index, den Access beim Verknüpfen aus dem Primärschlüssel übernimmt. Eine verknüpfte SQL-Server-Tabelle mit Primärschlüssel speichert; dieselbe Tabelle ganz ohne Index ist schreibgeschützt und lehnt wie oben ab. Das Steuerelement öffnet sein Dynaset mit dbSeeChanges, das SQL-Server-Tabellen mit einer IDENTITY-Spalte verlangen. Über den Wkl-OData-Treiber braucht eine Tabelle zum Schreiben außerdem eine Zeilenversion, unabhängig vom Typ ihres Schlüssels. Ohne sie sucht Access den Datensatz, indem es jeden alten Wert vergleicht (UPDATE … WHERE Id = ? AND Name = ?). Der Dienst bietet diesen Vergleich für eine Tabelle mit Schlüssel nicht an, und der Treiber lässt ihn auch nicht weg. Das Schreiben wird mit wkeSourceError abgelehnt: „[Wkl][OData]Die Bedingung auf 'Name' laesst sich nicht uebersetzen; … ein Vergleich mit dem alten Wert wird von diesem Dienst nicht angeboten.“ Zur Abhilfe fügen Sie der Tabelle entweder eine rowversion-Spalte hinzu oder schalten den Zeilenstempel des Dienstes für die Tabelle ein (siehe die Dokumentation des Dienstes). Verknüpfen Sie die Tabelle danach neu.
  • Eine Transaktion, ein Ort. Jeder Schreibvorgang einer Benutzeraktion läuft in einer Transaktion des Standard-Arbeitsbereichs von DAO, auch der Zelleneditor von WklTreeList (BeforeUpdate mit Action = wuaCellValue). Cancel in BeforeUpdate oder eine Ablehnung durch Access setzt die ganze Aktion zurück und lädt die Struktur neu. Schreibvorgänge, die Ihr eigener Code in BeforeUpdate über CurrentDb ausführt, gehören zum selben Arbeitsbereich und werden mit zurückgesetzt. Cancel in ValidateCell greift vor jedem Schreibvorgang: Der Editor schließt, und die Zelle behält ihren alten Wert.
  • Eine Datenherkunft für alle Knoten. Eine Struktur, deren Knotenarten über eine UNION-Abfrage aus mehreren Tabellen stammen, kann nicht direkt schreiben; es gibt keine Zuordnung von Knotenart zu Tabelle. Bearbeiten Sie eine solche Struktur stattdessen über Formulare: EditForms öffnet für den ausgewählten Knoten das Access-Formular seiner Art (sourceKeys nennt den Schlüssel des Datensatzes dahinter, deleteFrom die Tabelle, aus der gelöscht wird; siehe Datensätze in einem Access-Formular bearbeiten). Oder setzen Sie AutoSave = False und speichern die Änderung selbst: Die Struktur ändert dann nur ihre Anzeige, löst kein BeforeUpdate aus, und Ihre Behandlung von ValidateCell, AfterLabelEdit, NodeDrop oder BeforeDelete schreibt den Datensatz über seinen Schlüssel; setzen Sie dort Cancel, wenn Ihr Schreibvorgang fehlschlägt.

Einschränkungen und bekannte Probleme

Vertrauen. Die Steuerelemente registrieren sich als sicher für Skripterstellung und Initialisierung, obwohl Member Dateien schreiben (SaveToFile, Export…, SaveImage), Dateien öffnen (AutoStart) und Dateien lesen, die in gespeicherten Eigenschaften genannt sind (WklImage, auch von einer Netzwerkfreigabe). Verwenden Sie sie nur in Datenbanken aus vertrauenswürdigen Speicherorten.

Wo ein Steuerelement auf einem Formular stehen kann (die Seite jeder Komponente beschreibt ihren eigenen Ausweg):

OrtWas geschiehtAusweg
Detailbereich eines Endlosformulars, ungebundenAccess erzeugt eine einzige Instanz, die nur den aktuellen Datensatz zeigt; die anderen Zeilen bleiben leerEine Spalte von WklGrid (Status, Schalter, Token, Befehle)
Detailbereich eines Endlosformulars, gebunden (Steuerelementinhalt)Access öffnet das Formular nicht vollständigWie oben; im Formularkopf oder -fuß funktioniert ein gebundenes Steuerelement
Hinter oder auf einem UnterformularAccess zeichnet ein Unterformular über jedes ActiveX-Steuerelement (auch über WklBadge)Das Steuerelement neben das Unterformular setzen oder in das eigene Formular des Unterformulars
BerichtEin Hinweis statt der DatenGruppierungsebenen und Unterberichte; der Export einer Liste
Deaktiviert (Aktiviert = Nein)Access gibt einem deaktivierten ActiveX-Steuerelement kein Fenster; es wird als Bild gezeichnet und nimmt weder Maus noch Tasten an–
  • Berichte: In einem Bericht zeigen die Listen (WklTreeView, WklTreeList, WklGantt, WklGrid, WklPropertyGrid) einen Hinweis statt der Daten; WklBarcode und WklImage sind für Berichte gemacht (ein gebundenes Steuerelement zeichnet den Wert jedes Datensatzes in Seitenansicht und PDF); die übrigen Steuerelemente werden in Berichten nicht unterstützt. Hierarchische Berichte entstehen mit Gruppierungsebenen und Unterberichten; die Ansicht einer Liste wird über ihren Export weitergegeben.
  • Unterstützt: Access in 32 und 64 Bit. Die VBA-Module, die die Komponenten schreiben (basWklRibbon, das Modul des Build-Werkzeugs, das Add-In), deklarieren keine API-Funktionen; es gibt also kein PtrSafe anzupassen.
  • Einstellungen für hohe DPI werden nicht unterstützt.
  • Drag & Drop funktioniert nur innerhalb desselben Steuerelements: Knoten von WklTreeView, WklTreeList und WklGantt werden innerhalb ihrer eigenen Struktur verschoben oder kopiert; Zeilen von WklGrid lassen sich nicht ziehen (es nimmt nur Dateien aus dem Datei-Explorer an). Datensätze von einem Steuerelement auf ein anderes zu ziehen – zum Beispiel viele ausgewählte Personen auf eine Regel in einer zweiten Liste – ist nicht möglich. Stattdessen: Lassen Sie den Benutzer mit MultiSelect auswählen, lesen Sie SelectedKeys und führen Sie die Zuordnung über einen Befehl aus (eine Schaltfläche WklButton, einen Befehl des Kontextmenüs oder RowCommand); den Schlüssel des Ziels nehmen Sie aus SelectedKey des anderen Steuerelements. Beim Kopieren von Knoten werden Anlage- und mehrwertige Felder nicht mitkopiert.
  • AutoSave schreibt nur in eine RecordSource, die Access aktualisieren kann, mit einem KeyField, das genau einen Datensatz kennzeichnet; eine UNION-, GROUP BY- oder Pass-Through-Abfrage und eine verknüpfte Tabelle ohne eindeutigen Index lehnen beim Speichern der Änderung ab, nicht vorher. Es gibt keine Zuordnung von Knotenart zu Tabelle. Eine Struktur, die aus einem Recordset oder einer Datei geladen wurde, hat keine Herkunft, in die sie zurückschreiben könnte. Siehe Bearbeiten und Speichern: Voraussetzungen.
  • Der Filter eines gebundenen Steuerelements ist eine WHERE-Bedingung der Datenquelle und fragt sie jedes Mal ab; bei einer Pass-Through-Abfrage läuft die ganze Abfrage auf dem Server.
  • Access führt das Fenster eines ActiveX-Steuerelements in UI Automation nicht als untergeordnetes Element seines Formulars. Sprachausgaben erreichen das Raster über den Fokus; eine Suche im Elementbaum von Access findet es nicht.
  • NodeFormat und CellFormat werden nur mit FormatEvents = True ausgelöst. Jeder Ereignisaufruf in Access dauert einige Millisekunden, und die summieren sich bei jedem Neuzeichnen über alle sichtbaren Knoten oder Zellen.
  • Export: XLSX, XML und JSON; WklGantt schreibt außerdem Bilder, PDF und Microsoft-Project-XML. Andere Formate (XLS, CSV …) gehören nicht zu den Steuerelementen: Öffnen Sie die XLSX-Datei in Excel und speichern Sie sie im benötigten Format, von Hand oder mit wenigen Zeilen VBA. Der Excel-Export in der angezeigten Form lässt Datenbalken und Symbolsätze aus, bei WklGantt außerdem Abhängigkeitspfeile, Basispläne und Stichtage (es gibt keine Zellenform dafür).
  • WklGantt: Text im PDF ist Teil des Bildes und lässt sich nicht durchsuchen. Microsoft-Project-XML folgt dem Schema von Project 2007: Manuelle Planung, die Lücken unterbrochener Vorgänge und das Aussehen des Diagramms werden nicht ausgetauscht. Die Project-Dateien folgen dem von Microsoft veröffentlichten Schema und der Form von Project-2010-Dateien; das Öffnen in Microsoft Project selbst wird nicht unterstützt.

Lizenzierung

Die Steuerelemente und Objekte enthalten keine Lizenzprüfung: keinen Lizenzschlüssel, keine Prüfung in der Entwurfsansicht und keine zur Laufzeit, auch nicht in der Access Runtime oder auf UserForms in Excel und Word. Eine Datenbank, die sie verwendet, läuft auf jedem PC, auf dem das Release installiert und registriert ist (Anwendung mit WKL-Steuerelementen auf Benutzer-PCs verteilen). Es gelten die Nutzungsbedingungen Ihres Vertrags mit dem Lieferanten.

de/wiki/msaccess/comctl/overview.txt · Last modified: by Wolfgang van der Stille