Einführung.
In dieser Sitzung des Tutorials zum TreeView-Steuerelement verwenden wir zwei Unterformulare zusammen mit dem TreeView-Steuerelement auf dem Hauptformular frmTreeViewtab . Wir haben das ImageList-Steuerelement mit den vorinstallierten Bildern aus unserem früheren Demo-Projekt importiert.Wir werden dieselbe lvCategory verwenden und lvProducts Tabellen, die wir für unsere früheren Projekte. verwendet haben
Die lvCategory Primärschlüssel der Tabelle field (CID) und Description field (Category) Werte sind der Key der TreeView Nodes Add() Methode und Text Parameterwerte.
Die lvProducts Die Tabelle enthält detaillierte Informationen zu jedem Produkt wie Produktcode, Beschreibung, Lagereinheit, Menge und Listenpreis.
Außerdem die lvProducts Tabelle hat die ParentID Feld, das mit dem Wert des Kategoriecodes (CID) aktualisiert wurde. Alle Produktartikel, die zu einer bestimmten Kategorie gehören, werden mit dem CID-Feldwert (Kategorie-ID) im Feld ParentID aktualisiert. Auf diese Weise haben beide Tabellen die Master-Child-Beziehung.
Die Produktdatensätze haben zwei Unterformulare auf den Registerkartensteuerungsseiten. Die erste Seite hat die Daten Ansicht Unterformular und die zweite Seite hat das Bearbeiten Unterformular. Das erste Registerkartensteuerelement Page zeigt alle Produktdatensätze an, die zu einer bestimmten Kategorie des TreeView-Steuerelements gehören. Die Datensätze des ersten Unterformulars werden zur Ansicht und zur Auswahl eines bestimmten Datensatzes zur Bearbeitung im zweiten Unterformular angezeigt.
Die Strömung Datensatz oder vom Benutzer ausgewählt Der Datensatz im ersten Unterformular steht zur Bearbeitung im zweiten Unterformular auf der zweiten Seite des Tab-Steuerelements zur Verfügung. Die grau hinterlegten Schlüsselfelder sind gesperrt und können nicht bearbeitet werden.
Baumansicht mit Entwurfsansicht für Unterformulare.
Die Designansicht des Formulars frmTreeViewTab ist unten angegeben:
Die ersten beiden ungebundenen Textfelder im Hauptformular werden aktualisiert, wenn der Benutzer ein Category-Element aus dem TreeView-Steuerelement auswählt.
Das dritte ungebundene Textfeld (Name p_ID) wird zunächst mit dem eindeutigen ID-Wert (PID) des ersten Produktdatensatzes aktualisiert, andernfalls wird der Wert des vom Benutzer ausgewählten Datensatzes aktualisiert. Der ausgewählte Produktdatensatz im ersten Teilformular steht im zweiten Teilformular für Änderungen zur Verfügung.
Links zu früheren Tutorial-Sitzungen.
Die Links zu früheren Tutorial-Sitzungen sind unten als Referenz angegeben:
- Tutorial für das Microsoft TreeView-Steuerelement
- Zugriffsmenü mit TreeView-Steuerelement erstellen
- Bilder dem TreeView-Steuerelement zuweisen
- Zuweisen von Bildern zu TreeView Control-2
- TreeView Control-Häkchen hinzufügen Knoten löschen
- TreeView ImageCombo-Dropdown-Zugriffsmenü
- TreeView-Knoten per Drag-and-Drop neu anordnen
- ListView Control mit MS-Access TreeView
- Drag-Drop-Ereignisse des ListView-Steuerelements
Die CatId ungebundenes Textfeld ist das [Link Master Fields] Eigenschaftswert des ersten Unterformulars.
Der Produktcode im dritten ungebundenen Textfeld (p_ID ) ist mit [Link Master Fields] verknüpft Eigenschaftswert des zweiten Unterformulars in der Ansicht Registerkarte Seite.
Die p_ID Der ungebundene Textfeldwert wird aktualisiert, wenn der Inhalt des ersten Unterformulars aktualisiert wird oder wenn ein Element vom Benutzer ausgewählt wird.
Normale Ansicht des Bildschirms.
Die normale Ansicht des frmTreeViewTab Formular ist unten angegeben:
Die Schlüsselfelder im Produktdatensatz im zweiten Unterformular mit grauer Vorfarbe sind gesperrt und dürfen den Inhalt nicht ändern.
Das Formular frmTreeViewTab VBA-Code des Klassenmoduls:
Option Compare Database Option Explicit Dim tv As MSComctlLib.TreeView Dim imgList As MSComctlLib.ImageList Const Prfx As String = "X" Private Sub Form_Load() Dim db As DAO.Database Dim tbldef As TableDef 'Initialize TreeView Nodes Set tv = Me.TreeView0.Object tv.Nodes.Clear 'Initialixe ImageList Object Set imgList = Me.ImageList3.Object 'Modify TreeView Font Properties With tv .Font.Size = 9 .Font.Name = "Verdana" .ImageList = imgList 'assign preloaded imagelist control End With LoadTreeView 'Create TreeView Nodes End Sub Private Sub LoadTreeView() Dim Nod As MSComctlLib.Node Dim strCategory As String Dim strCatKey As String Dim strProduct As String Dim strPKey As String Dim strBelongsTo As String Dim strSQL As String Dim db As DAO.Database Dim rst As DAO.Recordset 'Initialize treeview nodes tv.Nodes.Clear strSQL = "SELECT lvCategory.CID, lvCategory.Category, " strSQL = strSQL & "lvcategory.BelongsTo FROM lvCategory ORDER BY lvCategory.CID;" Set db = CurrentDb Set rst = db.OpenRecordset(strSQL, dbOpenSnapshot) ' Populate all Records as Rootlevel Nodes Do While Not rst.BOF And Not rst.EOF If rst.AbsolutePosition = 1 Then Me![CatID] = rst![CID] End If strCatKey = Prfx & CStr(rst!CID) strCategory = rst!Category Set Nod = tv.Nodes.Add(, , strCatKey, strCategory, 1, 2) Nod.Tag = rst!CID rst.MoveNext Loop 'In the second pass of the the same set of records 'Move Child Nodes under their Parent Nodes rst.MoveFirst Do While Not rst.BOF And Not rst.EOF strBelongsTo = Nz(rst!BelongsTo, "") If Len(strBelongsTo) > 0 Then strCatKey = Prfx & CStr(rst!CID) strBelongsTo = Prfx & strBelongsTo strCategory = rst!Category Set tv.Nodes.Item(strCatKey).Parent = tv.Nodes.Item(strBelongsTo) End If rst.MoveNext Loop rst.Close TreeView0_NodeClick tv.Nodes.Item(1) End Sub Private Sub TreeView0_NodeClick(ByVal Node As Object) Dim Cat_ID As String 'Initialize hidden unbound textbox 'Link Master Field' values Cat_ID = Node.Tag Me!CatID = Cat_ID Me![xCategory] = Node.Text End Sub Private Sub cmdExit_Click() DoCmd.Close End Sub
Da die Verwendung von TreeView Control und ImageList Control und deren Funktionsweise in den früheren Sitzungen ausführlich erläutert wurde, werden Sie nur einige dieser früheren VBA-Subroutinen im obigen Formularmodul finden.
Wir haben bisher mehrere Bildschirme mit MS-Access TreeView, ListView, ImageList und ImageCombo Control entworfen und ich hoffe, Sie finden sie als guten Bezugspunkt für Ihr eigenes Projekt-Interface-Design.
MS-Office-Versionsprobleme für TreeView Control.
Wenn Sie Probleme beim Ausführen der Demo-Datenbank in Ihrer Version von Microsoft Access hatten, finden Sie unter dem folgenden Link einige Korrekturmaßnahmen, die hilfreich sein können, um Ihr Problem zu lösen:
Früher liefen die oben genannten Steuerelemente nicht unter 64-Bit-Systemen. Aber im September 2017 hat Microsoft ein Update der MSCOMCTL.OCX-Bibliothek herausgebracht, und der folgende Auszug des Microsoft-Dokuments ist unten zu Ihrer Information aufgeführt:
Klicken Sie auf das obige Dokumentbild, um den vollständigen Text des 2017 Update:1707-Dokuments anzuzeigen. Der folgende Link schlägt einige hilfreiche Hinweise vor.- GELÖST MSCOMCTL.OCX-DOWNLOAD REGISTRIEREN 64-BIT-WINDOWS
Mit der Verwendung der obigen TreeView-Steuerelementobjekte können wir besser aussehende und leistungsfähigere Benutzeroberflächen für unsere neuen Projekte erstellen.
Laden Sie die Demo-Datenbank herunter.