Въведение.
В тази сесия на урока за контрол на TreeView ще използваме два подформуляра заедно с контролата TreeView в главния формуляр frmTreeViewtab . Импортирахме контролата ImageList с предварително заредените изображения от нашия по-ранен демонстрационен проект.Ще използваме същата lvCategory и lvПродукти Таблици, които сме използвали за предишните си проекти.
lvCategory Първичен ключ на таблицата Стойностите на поле (CID) и поле за описание (Категория) са ключ на метода TreeView Nodes Add() и Текст стойности на параметрите, съответно.
Продуктите lvProducts Таблицата съдържа подробна информация за всеки продукт, като код на продукта, описание на складово-единично количество и каталожна цена.
Освен това, lvProducts таблицата има ParentID поле, което се актуализира със стойността на кода на категорията (CID). Всички артикули на продукти, които принадлежат към определена категория, се актуализират със стойността на полето CID (ID на категория) в полето ParentID. По този начин и двете таблици имат връзката главен-дете.
Записите за продукти имат две подформуляри на контролните страници на раздела. Първата страница съдържа данните Преглед подформуляр и втората страница има Редактиране подформуляр. Страницата за контрол на първия раздел показва всички записи на продукти, които принадлежат към определена категория на TreeView Control. Първите записи на подформуляр се показват за преглед и за избор на конкретен запис за редактиране във втория подформуляр.
Натоката запис или избран от потребителя записът в първия подформуляр е достъпен за редактиране във втория подформуляр, на втората страница на контролния раздел . Ключовите полета, маркирани със сив цвят, са заключени и не могат да бъдат редактирани.
Изглед на дърво с изглед за проектиране на подформуляри.
Изгледът за проектиране на формата frmTreeViewTab е даден по-долу:
Първите две необвързани текстови полета в основния формуляр се актуализират, когато потребителят избере елемент от категорията от контролата TreeView.
Третото необвързано текстово поле (име p_ID) първоначално се актуализира със стойността на уникалния идентификатор (PID) на първия запис на продукта, в противен случай стойността на избрания от потребителя запис се актуализира. Избраният запис на продукт в първия подформуляр е наличен във втория подформуляр за модификации.
Връзки към по-ранни учебни сесии.
По-ранните връзки към сесията на урока са дадени по-долу за лесна справка:
- Урок за контрол на Microsoft TreeView
- Създаване на меню за достъп с TreeView Control
- Присвояване на изображения към TreeView Control
- Присвояване на изображения към TreeView Control-2
- TreeView Control Маркирайте отметка за добавяне на изтриване на възли
- DreeView ImageCombo падащо меню за достъп
- Пренаредете възлите на TreeView чрез плъзгане и пускане
- ListView Control с MS-Access TreeView
- ListView Control Drag Drop Events
CatId необвързаното текстово поле е [Link Master Fields] Стойност на свойството на първия подформуляр.
Кодът на продукта в третото необвързано текстово поле (p_ID ) е свързан с [Link Master Fields] стойност на свойството на втория подформуляр в Изглед Раздел Страница.
p_ID Стойността на необвързаното текстово поле се актуализира, когато съдържанието на първия подформуляр се обнови или когато елемент е избран от потребителя.
Нормален изглед на екрана.
Нормалният изглед на frmTreeViewTab Формулярът е даден по-долу:
Ключовите полета в записа на продукта във втория подформуляр, със сив преден цвят, са заключени и нямат право да променят съдържанието.
Формулярът frmTreeViewTab VBA код на модула за клас:
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
Тъй като използването на TreeView Control и ImageList Control и тяхното функциониране бяха обяснени подробно в по-ранните сесии, ще откриете, че само някои от тези по-ранни VBA подпрограми се появяват в горния модул за формуляр.
Досега сме проектирали няколко екрана с MS-Access TreeView, ListView, ImageList и ImageCombo Control и се надявам, че ще ги намерите като добра отправна точка за вашия собствен дизайн на интерфейса на проекта.
Проблеми с версията на MS-Office за TreeView Control.
Ако сте имали проблеми при стартирането на демонстрационната база данни във вашата версия на Microsoft Access, можете да се обърнете към следната връзка за някои коригиращи действия, които може да са полезни за решаване на проблема ви:
По-рано горните контроли не работеха под 64-битови системи. Но през септември 2017 г. Microsoft пусна актуализация на библиотеката MSCOMCTL.OCX и следното извлечение от документа на Microsoft е дадено по-долу за ваша информация:
Щракнете върху изображението на документа по-горе за пълния текст на документа за актуализация за 2017 г.:1707. Следната връзка предлага някои полезни съвети.- РЕШЕН MSCOMCTL.OCX ЗА ИЗТЕГЛЯНЕ РЕГИСТРЪТ 64 БИТОВ ПРОЗОР
С използването на горните контролни обекти TreeView можем да изградим по-добре изглеждащи и по-ефективни потребителски интерфейси за нашите нови проекти.
Изтеглете демонстрационната база данни.