Introduzione.
In questa sessione dell'esercitazione sul controllo TreeView, utilizzeremo due sottomoduli insieme al controllo TreeView nel modulo principale frmTreeViewtab . Abbiamo importato il controllo ImageList con le immagini precaricate dal nostro precedente progetto demo.Utilizzeremo la stessa lvCategory e lvProducts Tabelle che abbiamo utilizzato per i nostri progetti precedenti.
La lvCategory Chiave primaria della tabella I valori del campo (CID) e del campo Descrizione (Categoria) sono la Chiave del metodo TreeView Nodes Add() e Testo rispettivamente i valori dei parametri.
I lvProducts La tabella contiene informazioni dettagliate su ciascun prodotto come codice prodotto, descrizione stock-unità-quantità e prezzo di listino.
Oltre a ciò, i lvProducts la tabella ha il ID genitore campo aggiornato con il valore del codice categoria (CID). Tutti gli articoli di prodotto che appartengono a una particolare categoria vengono aggiornati con il valore del campo CID (ID categoria) nel campo ParentID. In questo modo entrambe le tabelle hanno la relazione master-child.
I record del prodotto hanno due sottomaschere nelle pagine di controllo a schede. La prima Pagina contiene i dati Visualizza sottomodulo e la seconda Pagina ha il Modifica sottomodulo. La prima pagina del controllo struttura a schede mostra tutti i record del prodotto che appartengono a una particolare categoria del controllo TreeView. I record della prima sottomaschera vengono visualizzati per la visualizzazione e per la selezione di un record particolare per la modifica nella seconda sottomaschera.
La corrente record o selezionato dall'utente record nella prima sottomaschera è disponibile per la modifica nella seconda sottomaschera, nella seconda pagina del controllo struttura a schede. I campi chiave evidenziati in grigio sono bloccati e non possono essere modificati.
TreeView con vista struttura sottomoduli.
La vista Design del modulo frmTreeViewTab è riportato di seguito:
Le prime due caselle di testo non associate nel form principale vengono aggiornate quando l'utente seleziona un elemento di categoria dal controllo TreeView.
La terza casella di testo non associata (nome p_ID) viene inizialmente aggiornata con il valore dell'ID univoco (PID) del primo record del prodotto, altrimenti il valore del record selezionato dall'utente viene aggiornato. Il record del prodotto selezionato nella prima sottomaschera è disponibile nella seconda sottomaschera per le modifiche.
Link a sessioni di tutorial precedenti.
Di seguito sono riportati i collegamenti alle sessioni del tutorial precedenti per un rapido riferimento:
- Esercitazione sul controllo di Microsoft TreeView
- Creazione del menu di accesso con il controllo TreeView
- Assegnazione di immagini al controllo TreeView
- Assegnazione di immagini a TreeView Control-2
- Segnale di spunta Controllo TreeView Aggiungi Elimina nodi
- Menu di accesso a discesa TreeView ImageCombo
- Riorganizza i nodi TreeView trascinandoli e rilasciandoli
- Controllo ListView con TreeView di MS-Access
- Eventi di trascinamento della selezione di controllo ListView
Il CatId La casella di testo non rilegata è il [Link Master Fields] Valore della proprietà della prima sottomaschera.
Il codice prodotto nella terza casella di testo non rilegata (p_ID ) è collegato ai [Link Master Fields] valore della proprietà della seconda sottomaschera in Visualizza Scheda Pagina.
Il p_ID il valore della casella di testo non associato viene aggiornato quando il contenuto della prima sottomaschera viene aggiornato o quando un elemento selezionato dall'utente.
Vista normale dello schermo.
La visualizzazione normale di frmTreeViewTab il modulo è riportato di seguito:
I campi Chiave del record Prodotto nel secondo sottomodulo, con il colore grigio in primo piano, sono bloccati e non possono modificare i contenuti.
Il modulo frmTreeViewTab Codice VBA del modulo di classe:
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
Poiché l'utilizzo di TreeView Control e ImageList Control e il loro funzionamento sono stati tutti spiegati in dettaglio nelle sessioni precedenti, nel modulo di cui sopra verranno visualizzate solo alcune di quelle subroutine VBA precedenti.
Finora abbiamo progettato diverse schermate con MS-Access TreeView, ListView, ImageList e ImageCombo Control e spero che le troverai come un buon punto di riferimento per la progettazione della tua interfaccia di progetto.
Problemi con la versione di MS-Office per il controllo TreeView.
Se hai riscontrato problemi nell'esecuzione del database demo nella tua versione di Microsoft Access, puoi fare riferimento al seguente link per alcune azioni correttive, che potrebbero essere utili per risolvere il tuo problema:
In precedenza, i controlli di cui sopra non erano in esecuzione con sistemi a 64 bit. Tuttavia, a settembre 2017 Microsoft ha pubblicato un aggiornamento della libreria MSCOMCTL.OCX e il seguente estratto del documento Microsoft è riportato di seguito per tua informazione:
Fai clic sull'immagine del documento sopra per il testo completo dell'aggiornamento 2017:documento 1707. Il seguente link suggerisce alcuni suggerimenti utili.- RISOLTO MSCOMCTL.OCX DOWNLOAD REGISTRO WINDOWS A 64 BIT
Con l'uso degli oggetti di controllo TreeView sopra, possiamo creare interfacce utente più belle e con prestazioni migliori per i nostri nuovi progetti.
Scarica il database demo.