Inleiding.
In deze sessie van de TreeView Control-zelfstudie gebruiken we twee subformulieren samen met het TreeView-besturingselement op het hoofdformulier frmTreeViewtab . We hebben het ImageList-besturingselement geïmporteerd met de vooraf geladen afbeeldingen uit ons eerdere demoproject.We gebruiken dezelfde lvCategory en lvProducts Tabellen die we hebben gebruikt voor onze eerdere projecten.
De lvCategory Tabel Primaire sleutel field (CID) en Description field (Category) waarden zijn de Key van de TreeView Nodes Add() methode en Tekst parameterwaarden, respectievelijk.
De lvProducts Tabel bevat gedetailleerde informatie over elk product, zoals productcode, beschrijving voorraad-eenheid-hoeveelheid en catalogusprijs.
Daarnaast zijn de lvProducts tabel heeft de ParentID veld dat is bijgewerkt met de waarde van de categoriecode (CID). Alle productitems die tot een bepaalde categorie behoren, worden bijgewerkt met de veldwaarde (Categorie-ID) CID in het veld ParentID. Op deze manier hebben beide tabellen de hoofd-kind relatie.
De productrecords hebben twee subformulieren op de tabbladbesturingspagina's. De eerste pagina heeft de gegevens Bekijken subformulier en de tweede pagina heeft de Bewerken subformulier. De eerste tabbladbesturingspagina geeft alle productrecords weer die tot een bepaalde categorie van het TreeView-besturingselement behoren. De eerste subformulierrecords worden weergegeven om te bekijken en om een bepaald record te selecteren om te bewerken op het tweede subformulier.
De huidige opnemen of door gebruiker geselecteerd record op het eerste subformulier is beschikbaar voor bewerking op het tweede subformulier, op de tweede pagina van het Tab-besturingselement. De met grijze kleur gemarkeerde Sleutelvelden zijn vergrendeld en kunnen niet worden bewerkt.
TreeView met Subforms-ontwerpweergave.
De ontwerpweergave van het formulier frmTreeViewTab wordt hieronder gegeven:
De eerste twee ongebonden tekstvakken op het hoofdformulier worden bijgewerkt wanneer de gebruiker een categorie-item selecteert in het TreeView-besturingselement.
Het derde niet-gebonden tekstvak (naam p_ID) wordt aanvankelijk bijgewerkt met de unieke ID (PID)-waarde van het eerste productrecord, anders wordt de waarde van het door de gebruiker geselecteerde record bijgewerkt. Het geselecteerde productrecord op het eerste subformulier is beschikbaar op het tweede subformulier voor wijzigingen.
Links naar eerdere zelfstudiesessies.
De eerdere Tutorial Sessie-links worden hieronder gegeven ter referentie:
- Microsoft TreeView Control-zelfstudie
- Toegangsmenu maken met TreeView Control
- Afbeeldingen toewijzen aan TreeView-besturingselement
- Afbeeldingen toewijzen aan TreeView Control-2
- TreeView Control Vinkje Toevoegen Verwijder Nodes
- Vervolgkeuzelijst TreeView ImageCombo-toegang
- Herschik TreeView-knooppunten door middel van slepen en neerzetten
- ListView-besturing met MS-Access TreeView
- ListView Control Drag Drop-gebeurtenissen
De CatId niet-gebonden tekstvak is de [Link Master Fields] Eigenschapswaarde van het eerste subformulier.
De productcode in het derde ongebonden tekstvak (p_ID ) is gekoppeld aan de [Hoofdvelden koppelen] eigenschapswaarde van het tweede subformulier op de View Tabblad.
De p_ID niet-gebonden tekstvakwaarde wordt bijgewerkt wanneer de inhoud van het eerste subformulier wordt vernieuwd of wanneer een item door de gebruiker is geselecteerd.
Normale weergave van het scherm.
De normale weergave van de frmTreeViewTab formulier is hieronder weergegeven:
De sleutelvelden op het productrecord op het tweede subformulier, met grijze voorkleur, zijn vergrendeld en mogen de inhoud niet wijzigen.
Het formulier frmTreeViewTab Klassenmodule VBA-code:
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
Aangezien het gebruik van TreeView Control en ImageList Control en hun werking allemaal in detail werden uitgelegd in de eerdere sessies, vindt u slechts enkele van die eerdere VBA-subroutines in het bovenstaande formuliermodule.
We hebben tot nu toe verschillende schermen ontworpen met MS-Access TreeView, ListView, ImageList en ImageCombo Control en ik hoop dat u ze zult vinden als een goed referentiepunt voor uw eigen projectinterface-ontwerp.
Problemen met de MS-Office-versie voor TreeView Control.
Als u problemen had met het uitvoeren van de demodatabase in uw versie van Microsoft Access, kunt u de volgende link raadplegen voor enkele corrigerende acties, die nuttig kunnen zijn om uw probleem op te lossen:
Eerder werden de bovenstaande besturingselementen niet uitgevoerd onder 64-bits systemen. Maar in september 2017 heeft Microsoft een update van MSCOMCTL.OCX Library uitgebracht en het volgende uittreksel van het Microsoft-document wordt hieronder ter informatie gegeven:
Klik op de bovenstaande documentafbeelding voor de volledige tekst van het 2017 Update:1707-document. De volgende link geeft enkele handige tips.- OPGELOST MSCOMCTL.OCX DOWNLOAD REGISTREREN 64 BIT WINDOWS
Met het gebruik van de bovenstaande TreeView-besturingsobjecten kunnen we mooiere en beter presterende gebruikersinterfaces bouwen voor onze nieuwe projecten.
Download de demodatabase.