Wprowadzenie.
W tej sesji samouczka kontrolki TreeView użyjemy dwóch podformularzy wraz z kontrolką TreeView na głównym formularzu frmTreeViewtab . Zaimportowaliśmy kontrolkę ImageList ze wstępnie załadowanymi obrazami z naszego wcześniejszego projektu demonstracyjnego.Będziemy używać tej samej lvCategory i lvProducts Tabele, których używaliśmy w naszych wcześniejszych projektach.
Kategoria lv Klucz główny tabeli Wartości pola (CID) i pola opisu (kategoria) to Klucz metody TreeView Nodes Add() i Tekst odpowiednio wartości parametrów.
lvProducts W tabeli znajdują się szczegółowe informacje o każdym produkcie, takie jak kod produktu, opis stan-jednostka-ilość i cena katalogowa.
Poza tym lvProducts tabela ma identyfikator rodzica pole, które zostało zaktualizowane wartością kodu kategorii (CID). Wszystkie produkty należące do określonej kategorii są aktualizowane wartością pola CID (ID kategorii) w polu ParentID. W ten sposób obie Tabele mają relację nadrzędny-podrzędny.
Rekordy produktów mają dwa podformularze na stronach kontrolnych karty. Pierwsza strona zawiera dane Wyświetl podformularz, a druga strona ma Edytuj podformularz. Strona kontrolna pierwszej zakładki wyświetla wszystkie rekordy produktu, które należą do określonej kategorii kontrolki TreeView. Rekordy pierwszego podformularza są wyświetlane do przeglądania i wyboru konkretnego rekordu do edycji w drugim podformularzu.
Obecny rekord lub wybrany przez użytkownika rekord w pierwszym podformularzu jest dostępny do edycji w drugim podformularzu, na drugiej stronie kontrolki Tab. Pola Kluczowe podświetlone szarym kolorem są zablokowane i nie można ich edytować.
Widok drzewa z widokiem projektu podformularzy.
Widok projektu formularza frmTreeViewTab podano poniżej:
Pierwsze dwa niezwiązane pola tekstowe w formularzu głównym są aktualizowane, gdy użytkownik wybierze element kategorii z kontrolki TreeView.
Trzecie niezwiązane pole tekstowe (nazwa p_ID) jest początkowo aktualizowane wartością unikalnego identyfikatora (PID) pierwszego rekordu produktu, w przeciwnym razie wartość rekordu wybranego przez użytkownika zostanie zaktualizowana. Wybrany rekord produktu w pierwszym podformularzu jest dostępny w drugim podformularzu do modyfikacji.
Linki do wcześniejszych sesji samouczków.
Linki do wcześniejszej sesji samouczka są podane poniżej w celach informacyjnych:
- Samouczek sterowania Microsoft TreeView
- Tworzenie menu dostępu za pomocą TreeView Control
- Przypisywanie obrazów do kontrolki TreeView
- Przypisywanie obrazów do TreeView Control-2
- Kontrola TreeView Zaznacz opcję Dodaj usuń węzły
- Rozwijane menu dostępu TreeView ImageCombo
- Ponownie rozmieszczaj węzły TreeView przez przeciąganie i upuszczanie
- Kontrola ListView z MS-Access TreeView
- Zdarzenia przeciągania i upuszczania sterowania ListView
CatId niezwiązane pole tekstowe to [Pola nadrzędne linków] Wartość właściwości pierwszego podformularza.
Kod produktu w trzecim niezwiązanym polu tekstowym (p_ID ) jest połączony z [Polami głównymi linków] wartość właściwości drugiego podformularza w Widoku Strona zakładki.
p_ID niezwiązana wartość pola tekstowego jest aktualizowana po odświeżeniu zawartości pierwszego podformularza lub po wybraniu elementu przez użytkownika.
Normalny widok ekranu.
Normalny widok frmTreeViewTab formularz jest podany poniżej:
Pola kluczowe w rekordzie produktu w drugim podformularzu, z szarym kolorem wstępnym, są zablokowane i nie można ich modyfikować.
Formularz frmTreeViewTab Kod VBA modułu klasy:
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
Ponieważ użycie kontrolki TreeView i kontrolki ImageList oraz ich działanie zostały szczegółowo wyjaśnione we wcześniejszych sesjach, tylko kilka z tych wcześniejszych podprogramów VBA pojawia się w powyższym formularzu Moduł.
Do tej pory zaprojektowaliśmy kilka ekranów z MS-Access TreeView, ListView, ImageList i ImageCombo Control i mam nadzieję, że uznasz je za dobry punkt odniesienia dla własnego projektu interfejsu projektu.
Problemy z wersją MS-Office dla TreeView Control.
Jeśli wystąpiły jakiekolwiek problemy z uruchomieniem demonstracyjnej bazy danych w Twojej wersji programu Microsoft Access, możesz skorzystać z poniższego łącza, aby uzyskać informacje o działaniach naprawczych, które mogą być pomocne w rozwiązaniu problemu:
Wcześniej powyższe Kontrole nie działały pod 64-bitowymi systemami. Jednak we wrześniu 2017 r. firma Microsoft wydała aktualizację biblioteki MSCOMCTL.OCX, a poniższy fragment dokumentu Microsoft jest podany poniżej w celach informacyjnych:
Kliknij powyższy obraz dokumentu, aby uzyskać pełny tekst aktualizacji 2017:1707. Poniższy link sugeruje kilka pomocnych wskazówek.- ROZWIĄZANY MSCOMCTL.OCX POBIERZ REJESTR 64-BITOWY WINDOWS
Korzystając z powyższych obiektów kontrolnych TreeView, możemy budować lepiej wyglądające i wydajniejsze interfejsy użytkownika dla naszych nowych projektów.
Pobierz demonstracyjną bazę danych.