Introduktion.
I denne session af TreeView Control Tutorial vil vi bruge to underformularer sammen med TreeView-kontrollen på hovedformularen frmTreeViewtab . Vi har importeret ImageList-kontrollen med de forudindlæste billeder fra vores tidligere demoprojekt.Vi vil bruge den samme lvCategory og lvProducts Tabeller, vi har brugt til vores tidligere projekter.
lvCategory Tabellens Primære nøgle felt- (CID) og beskrivelsesfeltværdier (kategori) er TreeView Nodes Add()-metodens Nøgle og Tekst parameterværdier, henholdsvis.
lvProducts Tabellen har detaljerede oplysninger om hvert produkt som produktkode, beskrivelse lager-enhed-mængde og listepris.
Udover det, lvProducts tabellen har Forældre-id felt, der er opdateret med værdien Kategorikode (CID). Alle produktelementer, der tilhører en bestemt kategori, opdateres med (Kategori-id) CID-feltværdien i feltet ParentID. På denne måde har begge tabeller mester-barn-forholdet.
Produktposterne har to underformularer på fanekontrolsiderne. Den første side har dataene Vis underformularen, og den anden side har Rediger underformular. Den første fanekontrolside viser alle produktposter, der tilhører en bestemt kategori af TreeView-kontrollen. De første underformularposter vises til visning og til valg af en bestemt post til redigering på den anden underformular.
Den aktuelle optage eller brugervalgt post på den første underformular er tilgængelig til redigering på den anden underformular, på den anden side af fanekontrolknappen. Nøglefelterne fremhævet med grå farve er låst og kan ikke redigeres.
TreeView med underformulardesignvisning.
Designvisningen af formularen frmTreeViewTab er angivet nedenfor:
De første to ubundne tekstbokse på hovedformularen opdateres, når brugeren vælger et kategorielement fra TreeView-kontrolelementet.
Den tredje ubundne tekstboks (navn p_ID) opdateres indledningsvis med den første produktposts unikke ID-værdi (PID) ellers bliver den brugervalgte posts værdi opdateret. Den valgte produktpost på den første underformular er tilgængelig på den anden underformular for ændringer.
Links til tidligere selvstudiesessioner.
De tidligere tutorialsessionslinks er givet nedenfor for let reference:
- Microsoft TreeView Control Tutorial
- Oprettelse af adgangsmenu med TreeView-kontrol
- Tildeling af billeder til TreeView-kontrol
- Tildeling af billeder til TreeView Control-2
- TreeView Control Check-Mark Tilføj slet noder
- TreeView ImageCombo-rullemenuen
- Omarranger TreeView-noder ved at trække og slippe
- ListView-kontrol med MS-Access TreeView
- ListView Control Træk-slip hændelser
CatId ubundet tekstfelt er [Link Master Fields] Ejendomsværdi af den første underform.
Produktkoden på den tredje ubundne tekstboks (p_ID ) er knyttet til [Link Master Fields] egenskabsværdien for den anden underformular på Vis Faneside.
p_ID ubundet tekstboksværdi bliver opdateret, når det første underformularindhold opdateres, eller når et element er valgt af brugeren.
Normal visning af skærmen.
Den normale visning af frmTreeViewTab formularen er angivet nedenfor:
Nøglefelterne på produktposten på den anden underformular, med grå forfarve, er låst og har ikke tilladelse til at ændre indholdet.
Formularen frmTreeViewTab Klassemodulets VBA-kode:
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 brugen af TreeView Control og ImageList Control og deres funktion alle blev forklaret i detaljer i de tidligere sessioner, vil du kun finde nogle få af disse tidligere VBA-underrutiner, der vises i ovenstående formular Modul.
Vi har designet adskillige skærme med MS-Access TreeView, ListView, ImageList og ImageCombo Control indtil videre, og jeg håber, du vil finde dem som et godt referencepunkt for dit eget projektgrænsefladedesign.
MS-Office-versionsproblemer til TreeView Control.
Hvis du havde problemer med at køre demodatabasen i din version af Microsoft Access, kan du henvise til følgende link for nogle korrigerende handlinger, som kan være nyttige til at løse dit problem:
Tidligere kørte ovenstående kontroller ikke under 64 bit-systemer. Men i september 2017 udgav Microsoft en opdatering af MSCOMCTL.OCX Library, og følgende uddrag af Microsoft-dokumentet er givet nedenfor til din information:
Klik på ovenstående dokumentbillede for den fulde tekst af 2017-opdateringen:1707-dokumentet. Følgende link foreslår nogle nyttige tip.- LØST MSCOMCTL.OCX DOWNLOAD REGISTER 64 BIT WINDOWS
Med brugen af ovenstående TreeView-kontrolobjekter kan vi bygge bedre udseende og bedre ydende brugergrænseflader til vores nye projekter.
Download demodatabasen.