Úvod.
V této relaci výukového programu pro ovládání TreeView použijeme dva podformuláře spolu s ovládacím prvkem TreeView v hlavním formuláři frmTreeViewtab . Importovali jsme ovládací prvek ImageList s předinstalovanými obrázky z našeho dřívějšího demo projektu.Budeme používat stejnou lvCategory a lvProducts Tabulky, které jsme použili pro naše dřívější projekty.
lvCategory Primární klíč tabulky hodnoty pole (CID) a pole popisu (kategorie) jsou Klíč metody TreeView Nodes Add() a Text hodnoty parametrů.
Produkty lvProducts Tabulka obsahuje podrobné informace o každém produktu, jako je kód produktu, popis skladové-jednotkové-množství a katalogová cena.
Kromě toho lvProducts tabulka má ParentID pole, které se aktualizovalo o hodnotu Kód kategorie (CID). Všechny položky produktu, které patří do určité kategorie, jsou aktualizovány hodnotou pole CID (ID kategorie) v poli ParentID. Tímto způsobem mají obě tabulky vztah hlavní a podřízený.
Záznamy produktu mají na ovládacích stránkách karet dva podformuláře. První stránka obsahuje data Zobrazit podformulář a na druhé stránce je Upravit podformulář. První karta ovládacího prvku Stránka zobrazuje všechny záznamy produktu, které patří do určité kategorie ovládacího prvku TreeView. Záznamy prvního podformuláře jsou zobrazeny pro prohlížení a pro výběr konkrétního záznamu pro úpravy ve druhém podformuláři.
Aktuální záznam nebo vybrané uživatelem záznam na prvním podformuláři je k dispozici pro úpravy na druhém podformuláři, na druhé stránce ovládacího prvku Tab. Pole Klíč zvýrazněná šedou barvou jsou uzamčena a nelze je upravovat.
Stromové zobrazení s návrhovým zobrazením podformulářů.
Návrhové zobrazení formuláře frmTreeViewTab je uveden níže:
První dvě nevázaná textová pole v hlavním formuláři jsou aktualizována, když uživatel vybere položku Kategorie z ovládacího prvku TreeView.
Třetí nevázané textové pole (název p_ID) je zpočátku aktualizováno hodnotou jedinečného ID (PID) prvního záznamu produktu, jinak se aktualizuje hodnota uživatelem vybraného záznamu. Vybraný záznam produktu v prvním podformuláři je k dispozici pro úpravy ve druhém podformuláři.
Odkazy na dřívější výukové programy.
Odkazy na dřívější výukové relace jsou uvedeny níže pro přehled:
- Výukový program pro ovládání Microsoft TreeView
- Vytvoření přístupové nabídky pomocí TreeView Control
- Přiřazení obrázků k ovládacímu prvku TreeView
- Přiřazení obrázků k TreeView Control-2
- Ovládací prvek TreeView zaškrtněte políčko Přidat a odstranit uzly
- Rozbalovací nabídka přístupu TreeView ImageCombo
- Změňte uspořádání uzlů TreeView přetažením
- Ovládání ListView s MS-Access TreeView
- Události přetažení ovládacího prvku ListView
CatId nevázané textové pole je [Link Master Fields] Hodnota vlastnosti prvního podformuláře.
Kód produktu na třetím nevázaném textovém poli (p_ID ) je propojen s [Pole předlohy odkazů] hodnotu vlastnosti druhého podformuláře v Zobrazení Stránka záložky.
p_ID hodnota nevázaného textového pole se aktualizuje, když se obnoví obsah prvního podformuláře nebo když uživatel vybere položku.
Normální pohled na obrazovku.
Normální zobrazení frmTreeViewTab formulář je uveden níže:
Pole Klíč v záznamu produktu na druhém podformuláři s šedou barvou popředí jsou uzamčena a není jim dovoleno upravovat obsah.
Formulář frmTreeViewTab Kód VBA modulu třídy:
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
Vzhledem k tomu, že použití TreeView Control a ImageList Control a jejich fungování byly podrobně vysvětleny v předchozích relacích, najdete ve výše uvedeném modulu formuláře pouze několik z těchto dřívějších podprogramů VBA.
Dosud jsme navrhli několik obrazovek s MS-Access TreeView, ListView, ImageList a ImageCombo Control a doufám, že je najdete jako dobrý referenční bod pro svůj vlastní návrh rozhraní projektu.
Problémy s verzí MS Office pro ovládání TreeView.
Pokud jste měli nějaké problémy se spuštěním ukázkové databáze ve vaší verzi Microsoft Access, můžete se podívat na následující odkaz, kde najdete některá nápravná opatření, která mohou být užitečná k vyřešení vašeho problému:
Dříve výše uvedené ovládací prvky neběžely pod 64bitovými systémy. V září 2017 však společnost Microsoft vydala aktualizaci knihovny MSCOMCTL.OCX a níže pro vaši informaci uvádíme následující výňatek z dokumentu společnosti Microsoft:
Kliknutím na výše uvedený obrázek dokumentu zobrazíte úplný text aktualizace z roku 2017:Dokument 1707. Následující odkaz nabízí několik užitečných rad.- VYŘEŠENO MSCOMCTL.OCX STÁHNOUT REGISTRACI 64BITOVÝCH WINDOWS
S použitím výše uvedených ovládacích objektů TreeView můžeme vytvořit lépe vypadající a výkonnější uživatelská rozhraní pro naše nové projekty.
Stáhněte si ukázkovou databázi.