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
| Situation | Steuerelement |
|---|---|
| Eine Hierarchie aus einer Tabelle zeigen (Organisation, Stückliste, Ordner) und per Drag & Drop bearbeiten | WklTreeView, WklTreeList |
| Eine Liste von Datensätzen mit Gruppierung, Filterzeile, Summen, Master-Detail und einer Million Zeilen von einem Server | WklGrid |
| Einen Datensatz als Eigenschaftenliste neben einer Liste bearbeiten | WklPropertyGrid |
| Vorgänge mit Abhängigkeiten und einem Arbeitskalender planen, Pläne mit Microsoft Project austauschen | WklGantt |
| Ein Anwendungsrahmen mit Navigation links, Kopfbereich mit Befehlen und Seiten, die das Fenster füllen | WklNavBar, WklActionBar, WklDockLayout |
| Eingaben vor dem Speichern des Datensatzes gegen Regeln prüfen, mit der Meldung neben dem Feld | WklValidator |
| Tabellen mit Entwicklungs-, Test- und Produktionsservern verknüpfen und zwischen ihnen umschalten | WklLinkManager |
| Eine Messreihe mit ihren Grenzwerten und ihrem Trend zeigen, oder Anzahlen je Monat | WklChart |
| Zeigen, wo etwas geschieht: Anmeldungen je Stadt, Standorte oder Kunden auf einer Weltkarte | WklMap |
| Suchen, während der Benutzer tippt, einen Zähler alle 30 Sekunden aktualisieren, viele Webanfragen im Takt eines Dienstes senden | WklTimerList |
| Eine Kennzahl, einen Status oder eine Anzahl messen und anzeigen | WklGauge, 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
- Freigegebenes Paket installieren – Voraussetzungen, Bitversion, Registrierung
- Anwendung auf Release 2.0 umstellen – für Anwendungen, die gegen Release 1.x gebaut wurden
- Eine Verwaltungsanwendung bauen – mehrere Steuerelemente im Zusammenspiel: ein Rahmen mit Navigation und Seiten sowie eine Liste mit angedocktem Bearbeitungsformular, das Eingaben prüft (Tutorial des WKL Administration Shell Templates)
- Eine Struktur an eine Tabelle binden und Kundenraster mit Bestellungen erstellen – jeweils ein Steuerelement für sich
Häufige Aufgaben
Aufgaben zu einem einzelnen Steuerelement finden Sie in dessen Überblick (siehe Wichtige Funktionen).
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| Bereich | Bedeutung |
|---|---|
| 1 | Das Release: die Steuerelemente in der Bitversion von Office, das Build-Werkzeug, das Add-In WKL Extensions und die Steuerelementbausteine |
| 2 | Die Dateien, in einen dauerhaften Ordner kopiert und für den aktuellen Windows-Benutzer registriert |
| 3 | Access bietet die Steuerelemente und die Typbibliothek an; beim Einfügen eines Steuerelements setzt Access den Verweis selbst |
| 4 | Jedes 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.
| Komponente | Zweck | Dokumentation |
|---|---|---|
WklGrid | Ein flaches Datenblatt mit Gruppierung, Spaltenfiltern, Master-Detail, Detailansichten, einem Servermodus für große Tabellen und einer Listenansicht. | Überblick · Referenz (Englisch) |
WklTreeView | Eine Struktur, gebunden an eine Tabelle, eine Abfrage oder eine SQL-Anweisung, mit Bearbeiten, Drag & Drop, Suche und Filter. | Überblick · Referenz (Englisch) |
WklTreeList | Ein hierarchisches Datenblatt: die Struktur mit Spalten, Zelleneditoren, Formatierung, Summen und Export nach Excel. | Überblick · Referenz (Englisch) |
WklGantt | Ein Gantt-Diagramm auf dem Datenblatt, mit Abhängigkeiten, einem Arbeitskalender, Terminplanung und Austausch mit Microsoft Project. | Überblick · Referenz (Englisch) |
WklPropertyGrid | Ein Datensatz als Zeilen „Beschriftung · Wert“ in Kategorien, für ein eigenes Formular oder als Detail. | Überblick · Referenz (Englisch) |
WklChart | Ein 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) |
WklMap | Punkte 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.
| Komponente | Zweck | Dokumentation |
|---|---|---|
WklToggleSwitch | Ein Ja/Nein-Schalter mit sofortiger Wirkung, gebunden wie ein Kontrollkästchen. | Überblick · Referenz (Englisch) |
WklTokenBox | Mehrere Werte eines Datensatzes als Token mit Vorschlägen, gespeichert in einer untergeordneten Tabelle. | Überblick · Referenz (Englisch) |
WklButtonEdit | Ein 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) |
WklSpinEdit | Eine Zahl mit Pfeilen nach oben und unten, Grenzen, einer Schrittweite und einer Einheit, gebunden wie ein Textfeld; auch als Listenspalte (wedSpin). | Überblick · Referenz (Englisch) |
WklValidator | Prü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.
| Komponente | Zweck | Dokumentation |
|---|---|---|
WklDockLayout | Ordnet die Bereiche eines Formulars bei jeder Größenänderung des Formulars in Zonen an, mit Trennleisten und Registergruppen. | Überblick · Referenz (Englisch) |
WklSplitter | Eine Trennleiste zwischen zwei Bereichen eines Formulars, mit der der Benutzer die Aufteilung verschiebt oder eine Seite einklappt. | Überblick · Referenz (Englisch) |
WklDrawer | Ein 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) |
Navigation und Befehle
Durch eine Anwendung navigieren und ihre Befehle ausführen.
| Komponente | Zweck | Dokumentation |
|---|---|---|
WklNavBar | Die Navigationsleiste eines Anwendungsrahmens, per Code oder aus einer Navigationstabelle gefüllt. | Überblick · Referenz (Englisch) |
WklActionBar | Der 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) |
WklButton | Eine 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.
| Komponente | Zweck | Dokumentation |
|---|---|---|
WklStatusLabel | Ein Status in einer Zeile – Text mit einer Art, die seine Farben bestimmt –, gebunden wie ein Textfeld. | Überblick · Referenz (Englisch) |
WklBadge | Eine 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) |
WklGauge | Ein Wert auf einer Skala mit farbigen Bereichen: Halb- oder Dreiviertelkreis, waagerechter oder senkrechter Balken, mehrere Balken mit Legende. | Überblick · Referenz (Englisch) |
WklKpiCard | Eine 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.
| Komponente | Zweck | Dokumentation |
|---|---|---|
WklBarcode | Ein QR-Code, Code-128- oder Data-Matrix-Symbol aus einem Text, gebunden wie ein Textfeld; in Berichten ein Code je Datensatz. | Überblick · Referenz (Englisch) |
WklImage | Ein 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.
| Komponente | Zweck | Dokumentation |
|---|---|---|
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) |
WklTimerList | Geplante 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.
Für Entwickler
- API-Referenz (Englisch) jeder Klasse und der Enumerationen: siehe die Spalte „Dokumentation“ unter Wichtige Funktionen; Auflistungen und ihre Elemente: WklColumns · WklColumn · WklBands · WklBand · WklFormatRules · WklFormatRule · WklLinkDifferences · WklLinkDifference
Verwandte Themen
CHANGELOG.mdim 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 Objekt | Seit Release |
|---|---|
WklTreeView, WklTreeList, WklGantt, WklGrid, WklSplitter, WklDockLayout, WklStatusLabel, WklLinkManager | 1.23.0 |
WklNavBar | 1.24.0 (Navigationstabelle: 1.26.0) |
WklButton | 1.26.0 (geteilte und Segmentschaltflächen, Badge: 1.27.0) |
WklValidator | 1.31.0 |
WklToggleSwitch | 1.32.0 |
WklTokenBox | 1.33.0 |
WklToast | 1.34.0 |
WklBadge | 1.35.0 |
Listenansicht von WklGrid | 1.36.0 |
Registergruppen von WklDockLayout | 1.37.0 |
WklPropertyGrid | 1.38.0 |
WklButtonEdit, WklSpinEdit | 1.43.0 |
WklGauge, WklKpiCard | 1.44.0 |
WklActionBar | 1.46.0 |
ColorScheme jedes Steuerelements und von WklToast; EditOnClick der Raster | 1.47.0 |
WklDrawer | 1.48.0 |
WklRibbon und der Menüband-Designer | 1.49.0 |
WklNavPane, der Designer für den Navigationsbereich und die Vorlage für den Anwendungsrahmen | 1.50.0 |
WklApplication, der Anwendungsdesigner, appModel und deploy des Build-Werkzeugs | 1.51.0 |
WklBarcode, WklImage; die öffentliche Dokumentation im Release-Paket | 1.52.0 |
Kontextmenüzuordnungen von WklRibbon (ShowAssignments, ApplyAssignments, EnsureMenus), integrierte Befehle über idMso | 1.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 Fenster | 1.54.1 |
Vertrauensprüfung einer Anwendungsdatei (WklApplication.CheckTrust, TrustReport, Test-AccessTrust.ps1), WklApplication.Version und Build, INSTALL.txt in jedem Auslieferungsordner des Build-Werkzeugs | 1.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 mehr | 1.56.1 |
Texte, auf die ein Wert folgt, behalten ihr Leerzeichen in Englisch, Slowenisch, Kroatisch und Italienisch; Bootstrapper 2.0 und registration.json im Paket | 1.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 Sprachen | 1.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 übernommen | 1.58.0 |
WklActionBar.SubtitleForeColor (eine eigene Farbe für den Untertitel; -1 folgt ForeColor), AppShell_SubtitleColor() in der Rahmenvorlage | 1.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 angegeben | 1.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 gegliedert | 1.59.2 |
WklTimerList (verzögerte und regelmäßige Aufgaben, eine getaktete Warteschlange von Webanfragen), WklChart | 1.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 WklGrid | 1.62.0 |
WklMap; Korrektur: die COM-Ablaufverfolgung schreibt keine Feldwerte mehr | 1.63.0 |
Spaltenfilter in WklTreeList und WklGantt (Filterzeile, Werteliste im Spaltenkopf, Filterleiste, FilterIncludesChildren); Korrektur: WklGrid.ColumnFilterValues mit mehreren Werten | 1.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, ab | 1.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.CaptionText | 1.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äftigt | 1.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 WklMap | 1.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 öffnet | 1.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 Zelle | 1.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 überarbeitet | 1.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.Versiongibt es zurück (1.55.0),WklApplication.Builddas Release, ein Pluszeichen und die vollständige Commit-ID der Quellen (1.55.0+ce4b826c...). Nennen SieBuildin jedem Fehlerbericht. - In den Dateieigenschaften (Registerkarte Details) zeigt
Wkl.Forms.ObjectLibrary.dlldas Release als Datei- und Produktversion,Wkl.Forms.ObjectLibrary.Managed.dlldas 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 Objekt | ACCDB | ACCDE | Access Runtime | UserForms in Excel und Word |
|---|---|---|---|---|
WklTreeView, WklTreeList | Unterstützt | Unterstützt | Unterstützt | Grundlegende Nutzung |
WklGantt, WklGrid | Unterstützt | Unterstützt | Unterstützt | Grundlegende Nutzung |
WklSplitter, WklDockLayout | Unterstützt | Unterstützt | Unterstützt | Grundlegende Nutzung |
WklStatusLabel, WklNavBar, WklButton | Unterstützt | Unterstützt | Unterstützt | Grundlegende Nutzung |
WklToggleSwitch, WklTokenBox, WklBadge, WklToast | Unterstützt | Unterstützt | Unterstützt | Grundlegende Nutzung |
WklValidator | Unterstützt | Unterstützt | Unterstützt | Nicht unterstützt (prüft Access-Formulare) |
WklLinkManager | Unterstützt | Unterstützt | Unterstützt | Nicht unterstützt (verknüpft Access-Tabellen) |
WklPropertyGrid | Unterstützt | Unterstützt | Unterstützt | Grundlegende Nutzung |
WklButtonEdit, WklSpinEdit | Unterstützt | Unterstützt | Unterstützt | Grundlegende Nutzung |
WklGauge, WklKpiCard | Unterstützt | Unterstützt | Unterstützt | Grundlegende Nutzung |
WklActionBar | Unterstützt | Unterstützt | Unterstützt | Grundlegende Nutzung |
WklDrawer | Unterstützt | Unterstützt | Unterstützt | Nicht unterstützt (platziert ein Access-Unterformularsteuerelement) |
WklRibbon (einschließlich Kontextmenüzuordnungen) | Unterstützt | Unterstützt | Unterstützt | Nicht unterstützt (Access-Menübänder) |
WklNavPane | Unterstützt | Unterstützt | Unterstützt (schreibt die Zeilen; die Runtime zeigt keinen Navigationsbereich) | Nicht unterstützt (Navigationsbereich von Access) |
| Vorlage für den Anwendungsrahmen | Unterstützt | Unterstützt | Unterstützt | Nicht unterstützt (Access-Formulare) |
WklApplication | Unterstützt | Unterstützt | Unterstützt | Nicht unterstützt (Starteigenschaften von Access) |
WklBarcode, WklImage (auch in Berichten: Seitenansicht und PDF) | Unterstützt | Unterstützt | Unterstützt | Grundlegende Nutzung |
WklTimerList | Unterstützt | Unterstützt | Unterstützt | Grundlegende Nutzung |
WklChart | Unterstützt | Unterstützt | Unterstützt | Grundlegende 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
RecordSourcespeichern; eine UNION-Abfrage, eine Abfrage mitGROUP BY, eine Pass-Through-Abfrage und eine verknüpfte ODBC-Tabelle ohne eindeutigen Index lehnen mit dem FehlerwkeSourceError(&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): MitAutoSave = Truefragt die Liste die Herkunft einmal ab –UpdatableundDataUpdatablevon DAO, AutoWert-Felder und bei einer verknüpften ODBC-Tabelle den Treiber (IDENTITY-, berechnete und rowversion-Spalten). Solche Zellen verhalten sich wieReadOnly. MitAutoSave = Falsewird nichts abgeschaltet, weil die Anwendung die Änderung selbst schreibt. Hinzufügen, Löschen, Umbenennen inWklTreeViewund 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,DataErrortritt mit dem obigen Text ein, und es folgt ein Meldungsfenster, sofernDataErrorden ParameterResponsenicht aufacDataErrContinue(0) setzt. Für eine Herkunft, die sich nicht aktualisieren lässt, schalten Sie das Bearbeiten ab:AllowEditing = False(LabelEdit = FalseinWklTreeView),AllowAdditions = False,AllowDeletions = Falseund kein Drag & Drop. KeyFieldmuss 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 mitFindFirstim Dynaset. Ein Schlüssel, der doppelt vorkommt, lehnt das Schreiben mitwkeDuplicateKey(&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 lautetKeyField = "OrderID;LineNo"; seine Felder gehen mitANDin 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 mitwkeSourceErrorabgelehnt: „[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 einerowversion-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(BeforeUpdatemitAction = wuaCellValue).CancelinBeforeUpdateoder eine Ablehnung durch Access setzt die ganze Aktion zurück und lädt die Struktur neu. Schreibvorgänge, die Ihr eigener Code inBeforeUpdateüberCurrentDbausführt, gehören zum selben Arbeitsbereich und werden mit zurückgesetzt.CancelinValidateCellgreift 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 (sourceKeysnennt den Schlüssel des Datensatzes dahinter,deleteFromdie Tabelle, aus der gelöscht wird; siehe Datensätze in einem Access-Formular bearbeiten). Oder setzen SieAutoSave = Falseund speichern die Änderung selbst: Die Struktur ändert dann nur ihre Anzeige, löst keinBeforeUpdateaus, und Ihre Behandlung vonValidateCell,AfterLabelEdit,NodeDropoderBeforeDeleteschreibt den Datensatz über seinen Schlüssel; setzen Sie dortCancel, 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):
| Ort | Was geschieht | Ausweg |
|---|---|---|
| Detailbereich eines Endlosformulars, ungebunden | Access erzeugt eine einzige Instanz, die nur den aktuellen Datensatz zeigt; die anderen Zeilen bleiben leer | Eine Spalte von WklGrid (Status, Schalter, Token, Befehle) |
| Detailbereich eines Endlosformulars, gebunden (Steuerelementinhalt) | Access öffnet das Formular nicht vollständig | Wie oben; im Formularkopf oder -fuß funktioniert ein gebundenes Steuerelement |
| Hinter oder auf einem Unterformular | Access zeichnet ein Unterformular über jedes ActiveX-Steuerelement (auch über WklBadge) | Das Steuerelement neben das Unterformular setzen oder in das eigene Formular des Unterformulars |
| Bericht | Ein Hinweis statt der Daten | Gruppierungsebenen 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;WklBarcodeundWklImagesind 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 keinPtrSafeanzupassen. - Einstellungen für hohe DPI werden nicht unterstützt.
- Drag & Drop funktioniert nur innerhalb desselben Steuerelements: Knoten von
WklTreeView,WklTreeListundWklGanttwerden innerhalb ihrer eigenen Struktur verschoben oder kopiert; Zeilen vonWklGridlassen 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 mitMultiSelectauswählen, lesen SieSelectedKeysund führen Sie die Zuordnung über einen Befehl aus (eine SchaltflächeWklButton, einen Befehl des Kontextmenüs oderRowCommand); den Schlüssel des Ziels nehmen Sie ausSelectedKeydes anderen Steuerelements. Beim Kopieren von Knoten werden Anlage- und mehrwertige Felder nicht mitkopiert. AutoSaveschreibt nur in eineRecordSource, die Access aktualisieren kann, mit einemKeyField, 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 einemRecordsetoder einer Datei geladen wurde, hat keine Herkunft, in die sie zurückschreiben könnte. Siehe Bearbeiten und Speichern: Voraussetzungen.- Der
Filtereines 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.
NodeFormatundCellFormatwerden nur mitFormatEvents = Trueausgelö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;
WklGanttschreibt 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, beiWklGanttauß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.