{"id":55000683,"date":"2009-10-01T00:00:00","date_gmt":"2020-05-22T22:17:34","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=683"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"TreeViewElemente_im_Griff","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/TreeViewElemente_im_Griff\/","title":{"rendered":"TreeView-Elemente im Griff"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg09.met.vgwort.de\/na\/00d6a1b7fbfb4427a9e32095bb8dc118\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Das TreeView-Steuerelement ist der Platzhirsch unter den Steuerelementen zur Anzeige hierarchischer Daten. Wie man es f&uuml;llt, haben wir in diversen Beitr&auml;gen gezeigt &#8211; aber wie &auml;ndert man darin enthaltene Elemente sp&auml;ter und wie greift man &uuml;berhaupt auf diese zu Dieser Beitrag beleuchtet, wie Sie beliebige Elemente referenzieren, l&ouml;schen, durchlaufen, ersetzen und ihre Eigenschaften anpassen.<\/b><\/p>\n<p>Wer noch keine Erfahrung mit dem TreeView-Steuerelement gesammelt hat und diesen Beitrag zum Anlass nimmt, sich einmal damit zu besch&auml;ftigen, sei auf die erw&auml;hnten bereits erschienenen Beitr&auml;ge verwiesen &#8211; die Suche nach dem Begriff TreeView im Onlinearchiv von <b>www.access-im-unternehmen.de <\/b>d&uuml;rfte gen&uuml;gend Lesematerial liefern. <\/p>\n<p>An dieser Stelle wollen wir uns nur peripher mit dem dem F&uuml;llen des TreeViews besch&auml;ftigen und eher auf den Umgang mit dem bereits voller Fr&uuml;chte h&auml;ngenden Baum konzentrieren. Da gibt es n&auml;mlich gen&uuml;gend Fragestellungen wie etwa die folgenden:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Wie referenziere ich ein Element im TreeView<\/li>\n<li class=\"aufz-hlung\">Wie erfahre ich, wie das aktuelle Element hei&szlig;t<\/li>\n<li class=\"aufz-hlung\">Wie springe ich zum ersten, letzten, vorherigen oder n&auml;chsten Element im TreeView<\/li>\n<li class=\"aufz-hlung\">Wie kann ich die vorhandenen Elemente durchlaufen<\/li>\n<\/ul>\n<p><b>Beispieldatenbank<\/b><\/p>\n<p>Damit Sie sich als TreeView-Neuling nicht durch alle bereits erschienenen Beitr&auml;ge zu diesem Thema durchk&auml;mpfen m&uuml;ssen, hier in aller K&uuml;rze der Ablauf zum F&uuml;llen des TreeViews mit Beispieldaten. Die Beispieldatenbank enth&auml;lt drei Tabellen namens <b>tblA<\/b>, <b>tblB <\/b>und <b>tblC<\/b>, die im Datenmodell wie in Bild 1 aussehen und bei denen die Tabelle <b>tblB <\/b>&uuml;ber das Fremdschl&uuml;sselfeld <b>AID <\/b>mit Tabelle <b>tblA <\/b>und die Tabelle <b>tblC <\/b>auf die gleiche Weise mit <b>tblB <\/b>verkn&uuml;pft ist. Die kleine Routine aus Listing 1 f&uuml;llt die Tabellen mit Beispieldaten.<\/p>\n<p class=\"kastentabelleheader\">Listing 1: Schreiben von Beispieldaten in die Tabellen tblA, tblB und tblC<\/p>\n<pre>Public Sub Beispieldaten()\r\nDim db As DAO.Database\r\nSet db = CurrentDb\r\nDim intA As Integer, lngA As Long, intB As Integer, lngB As Long, intC As Integer\r\ndb.Execute \"DELETE FROM tblA&euro;, dbFailOnError\r\nFor intA = 1 To 5\r\n db.Execute \"INSERT INTO tblA(AWert) VALUES(&euro;Wert&euro; &amp; intA &amp; \"&euro;)&euro;, dbFailOnError\r\n    lngA = db.OpenRecordset(\"SELECT @@IDENTITY&euro;).Fields(0)\r\n    For intB = 1 To 5\r\n        db.Execute \"INSERT INTO tblB(BWert, AID) VALUES(&euro;Wert&euro; &amp; intB &amp; \"&euro;, \" &amp; lngA &amp; \")&euro;, _\r\n        dbFailOnError\r\n        lngB = db.OpenRecordset(\"SELECT @@IDENTITY&euro;).Fields(0)\r\n        For intC = 1 To 5\r\n            db.Execute \"INSERT INTO tblC(CWert, BID) VALUES(&euro;Wert&euro; &amp; intC &amp; \"&euro;, \" _\r\n            &amp; lngB &amp; \")&euro;, dbFailOnError\r\n        Next intC\r\n    Next intB\r\nNext intA\r\nEnd Sub<\/pre>\n<p class=\"kastentabelleheader\">Listing 3: Auf- und abbewegen im TreeView-Steuerelement<\/p>\n<p class=\"kastentabelleheader\">Testen und debuggen ohne Hindernisse<\/p>\n<p>Wenn Sie die folgenden Beispiele ausprobieren oder eigene Zugriffe auf die Elemente des TreeView-Steuerelements programmieren, werden zweifelsohne Fehler auftreten. Dies f&uuml;hrt dazu, dass weitere Aufrufe nicht mehr funktionieren, wenn Sie nicht das Formular schlie&szlig;en und erneut &ouml;ffnen. Woran liegt das Access speichert Variablen nur so lange, bis ein Fehler auftritt. Access 2007-Entwickler k&ouml;nnen die <b>TempVars<\/b>-Auflistung verwenden, um Variablen darin zu speichern, die auch beim Auftreten von Fehlern nicht ihren Wert verlieren. Alle anderen sollten eine entsprechende Fehlerbehandlung einbauen, die unbehandelte Fehler ausschlie&szlig;t &#8211; behandelte Fehler l&ouml;schen keine Variableninhalte. Wenn Sie zum Experimentieren oder in der Anfangsphase eines Projekts auf eine Fehlerbehandlung verzichten wollen, k&ouml;nnen Sie sich anderweitig behelfen. Vom L&ouml;schen der Variablen ist vor allem <b>objTreeView <\/b>betroffen, das nur einmal beim Laden des Formulars mit einem Verweis auf <b>ctlTreeView.Object <\/b>best&uuml;ckt wird. Wenn Sie dauerhaft &uuml;ber diese Variable auf <b>ctlTreeView.Object <\/b>zugreifen m&ouml;chten, schreiben Sie einfach folgende Zeilen in den Kopf des Klassenmoduls:<\/p>\n<pre>Dim WithEvents m_TreeView As MSComctlLib.TreeView\r\nPrivate Function objTreeView() As\r\n MSComctlLib.TreeView\r\n    If m_TreeView Is Nothing Then\r\n        Set m_TreeView = Me.ctlTreeView.Object\r\n    End If\r\n    Set objTreeView = m_TreeView\r\nEnd Function<\/pre>\n<p>Statt einer Objektvariablen namens <b>objTreeView <\/b>haben Sie es nun mit einer gleichnamigen Funktion zu tun. Der eigentliche Verweis wird in der Objektvariablen <b>m_TreeView <\/b>gespeichert. &Uuml;ber die Funktion <b>objTreeView <\/b>k&ouml;nnen Sie im &uuml;brigen Code genau so auf <b>ctlTreeView.Object <\/b>zugreifen wie &uuml;ber die zuvor definierte Variable <b>objTreeView<\/b>. Die Funktion pr&uuml;ft, ob <b>m_TreeView <\/b>noch einen Wert enth&auml;lt, was normalerweise der Fall ist, oder ob sie leer ist &#8211; dies ist in der Regel auf einen vorherigen unbehandelten Fehler zur&uuml;ckzuf&uuml;hren &#8211; und f&uuml;llt sie erneut mit einem Verweis auf <b>ctlTreeView.Object<\/b>.<\/p>\n<p>Noch ein Hinweis: Wenn Sie diese Variante verwenden, m&uuml;ssen Sie nat&uuml;rlich die folgende Zeile aus dem <b>Form_Load<\/b>-Ereignis des Formulars entfernen:<\/p>\n<pre>Set objTreeView = Me!ctlTreeView.Object\r\nPrivate Sub cmdNachOben_Click()\r\n    If objTreeView.SelectedItem.Index &gt; 1 Then\r\n        objTreeView.SelectedItem = objTreeView.Nodes.Item(objTreeView.SelectedItem.Index - 1)\r\n    Else\r\n        objTreeView.SelectedItem = objTreeView.Nodes.Item(objTreeView.Nodes.Count)\r\n    End If\r\n    End Sub\r\nPrivate Sub cmdNachUnten_Click()\r\n    If objTreeView.SelectedItem.Index &lt; objTreeView.Nodes.Count Then\r\n        objTreeView.SelectedItem = objTreeView.Nodes.Item(objTreeView.SelectedItem.Index + 1)\r\n    Else\r\n        objTreeView.SelectedItem = objTreeView.Nodes.Item(1)\r\n    End If\r\n    End Sub<\/pre>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_05\/TreeViewImGriff-web-images\/pic001_opt.jpeg\" alt=\"pic001.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Datenmodell f&uuml;r das F&uuml;llen des TreeView-Steuerelements<\/span><\/b><\/p>\n<p>Das Formular <b>frmTreeView <\/b>enth&auml;lt ein Steuerelement namens <b>ctlTreeView<\/b>, dessen Einstellungen Sie zun&auml;chst nicht anpassen. Der Code zum F&uuml;llen und f&uuml;r den Zugriff auf das TreeView-Steuerelement landet im Klassenmodul des Formulars <b>frmTreeView<\/b>, das Sie durch die Auswahl des Eintrags <b>[Ereignisprozedur] <\/b>f&uuml;r die Eigenschaft <b>Beim Laden <\/b>des Formulars und anschlie&szlig;endes Anklicken der Schaltfl&auml;che mit den drei Punkten anlegen. Dort finden Sie gleich eine leere Ereignisprozedur namens <b>Form_Load<\/b>, die Sie aber noch nicht best&uuml;cken. Zuerst f&uuml;gen Sie in den Kopf des Moduls die folgende Deklaration ein, die das Schreiben des Beispielcodes durch die Bereitstellung von IntelliSense vereinfacht:<\/p>\n<pre>Dim WithEvents objTreeView As MSComctlLib.TreeView<\/pre>\n<p>Dann vervollst&auml;ndigen Sie die Ereignisprozedur so, dass diese die erste Ebene des TreeView-Steuerelements mit den Datens&auml;tzen aus Tabelle <b>tblA <\/b>f&uuml;llt (s. Listing 2). W&auml;hrend des F&uuml;llens ruft die Routine gleich die Routine <b>FillNodeA <\/b>und diese wiederum <b>FillNodeB <\/b>auf, um die Datens&auml;tze der Tabellen <b>tblB <\/b>und <b>tblC <\/b>ebenfalls zum TreeView hinzuzuf&uuml;gen. Dieses sieht nach dieser Behandlung wie in Bild 2 aus.<\/p>\n<p class=\"kastentabelleheader\">Listing 2: F&uuml;llen der ersten drei Ebenen des TreeViews mit den Daten der Beispieltabellen<\/p>\n<pre>Private Sub Form_Load()\r\n    Dim rstA As DAO.Recordset\r\n    Dim objNode As MSComctlLib.Node\r\n    ...\r\n    Set objTreeView = Me!ctlTreeView.Object\r\n    Set rstA = db.OpenRecordset(\"SELECT * FROM tblA&euro;, dbOpenDynaset)\r\n    objTreeView.LineStyle = tvwRootLines\r\n    Do While Not rstA.EOF\r\n        Set objNode = objTreeView.Nodes.Add(, , \"A&euro; &amp; rstA!AID, rstA!AWert)\r\n        FillNodeA objNode, rstA!AID\r\n        rstA.MoveNext\r\n    Loop\r\n    ...\r\n    End Sub\r\nPrivate Sub FillNodeA(objNode As MSComctlLib.Node, lngIDA As Long)\r\n    Dim rstB As DAO.Recordset\r\n    ...\r\n    Set rstB = db.OpenRecordset(\"SELECT * FROM tblB WHERE AID = \" &amp; lngIDA, dbOpenDynaset)\r\n    Do While Not rstB.EOF\r\n        Set objNode = objTreeView.Nodes.Add(\"A&euro; &amp; lngIDA, tvwChild, \"B&euro; &amp; rstB!BID, rstB!BWert)\r\n        FillNodeB objNode, rstB!BID\r\n        rstB.MoveNext\r\n    Loop\r\n    ...\r\n    End Sub\r\nPrivate Sub FillNodeB(objNode As MSComctlLib.Node, lngIDB As Long)\r\n    Dim rstC As DAO.Recordset\r\n    ...\r\n    Set rstC = db.OpenRecordset(\"SELECT * FROM tblC WHERE BID = \" &amp; lngIDB, dbOpenDynaset)\r\n    Do While Not rstC.EOF\r\n        Set objNode = objTreeView.Nodes.Add(\"B&euro; &amp; lngIDB, tvwChild, \"C&euro; &amp; rstC!CID, rstC!CWert)\r\n        rstC.MoveNext\r\n    Loop\r\n    ...\r\n    End Sub<\/pre>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_05\/TreeViewImGriff-web-images\/pic002_opt.jpeg\" alt=\"pic002.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Das mit den Beispieldaten gef&uuml;llte TreeView-Steuerelement<\/span><\/b><\/p>\n<p><!--30percent--><\/p>\n<p><b>TreeView-Elemente referenzieren<\/b><\/p>\n<p>Die Elemente hei&szlig;en nun in der ersten Ebene <b>A1<\/b>, <b>A2<\/b>, <b>A3 <\/b>&#8230;, in der zweiten Ebene <b>B1<\/b>, <b>B2<\/b>, <b>B3<\/b>&#8230; und in der dritten Ebene <b>C1<\/b>, <b>C2<\/b>, <b>C3 <\/b>und so weiter. Wenn Sie sich noch ein wenig aufw&auml;rmen m&ouml;chten, legen Sie noch eine Tabelle, Beispieldaten und die <b>FillNode&#8230;<\/b>-Prozedur f&uuml;r eine oder mehrere weitere Ebenen an.<\/p>\n<p>Schauen wir uns an, welche M&ouml;glichkeiten es gibt, die einzelnen <b>Node<\/b>-Elemente zu referenzieren. Holen wir uns zun&auml;chst einen g&uuml;ltigen Verweis auf das TreeView-Steuerelement selbst und testen dieses. Das erledigt die Abfrage der <b>Name<\/b>-Eigenschaft dieses Steuerelements im Direktfenster (siehe Bild 3):<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_05\/TreeViewImGriff-web-images\/pic003_opt.jpeg\" alt=\"pic003.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: Referenztest im Direktbereich<\/span><\/b><\/p>\n<pre>Debug.Print Forms!frmTreeView!ctlTreeView.Name<\/pre>\n<p>Da wir im Folgenden relativ h&auml;ufig direkt auf das TreeView-Steuerelement zugreifen m&ouml;chten und dabei auch IntelliSense nutzen wollen, bauen wir eine kleine Funktion, die uns einen Verweis auf das TreeView-Steuerelement liefert. Diese sieht so aus:<\/p>\n<pre>Dim m_TreeView As MSComctlLib.TreeView\r\nPublic Function GetTreeView() As\r\n MSComctlLib.TreeView\r\n    If m_TreeView Is Nothing Then\r\n        Set m_TreeView =\r\n        Forms!frmTreeView!ctlTreeView.Object\r\n    End If\r\n    Set GetTreeView = m_TreeView\r\nEnd Function<\/pre>\n<p>Die Funktion speichert den Verweis in einer globalen Variablen namens <b>m_TreeView <\/b>und liefert deren Inhalt als Funktionswert zur&uuml;ck, wenn die Variable bereits gef&uuml;llt ist. Wenn nicht, erledigt sie dies innerhalb der <b>If&#8230;Then<\/b>-Bedingung.<\/p>\n<p>Im Code Ihrer Anwendung sollte das Steuerelement jedoch auf die im Klassenmodul des Formulars deklarierte Variable etwa namens <b>objTreeView <\/b>zugreifen.<\/p>\n<p>F&uuml;r die folgenden Beispiele gilt analog: Ersetzen Sie <b>GetTreeView <\/b>durch <b>objTreeView<\/b>, um innerhalb des Klassenformulars auf das <b>TreeView<\/b>-Objekt zuzugreifen.<\/p>\n<p><b>GetTreeView <\/b>liefert nun immer einen Verweis auf das TreeView-Objekt &#8211; vorausgesetzt, das Formular ist in der Formularansicht ge&ouml;ffnet.<\/p>\n<p>Im Direktfenster, wo einige unserer Tests stattfinden werden, steht damit auch das gew&uuml;nschte IntelliSense zur Verf&uuml;gung (siehe Bild 4).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_05\/TreeViewImGriff-web-images\/pic004_opt.jpeg\" alt=\"pic004.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4: IntelliSense im Direktfenster<\/span><\/b><\/p>\n<p>Die Gesamtzahl der im TreeView-Objekt enthaltenen <b>Node<\/b>-Elemente liefert dieser Ausdruck:<\/p>\n<pre>GetTreeView.Nodes.Count<\/pre>\n<p><b>Elemente durchlaufen<\/b><\/p>\n<p>Informationen zu allen Nodes erhalten Sie &uuml;ber eine herk&ouml;mmliche <b>For&#8230;Next<\/b>-Schleife und die <b>Nodes<\/b>-Auflistung. Die folgenden Zeilen liefern alle <b>Key<\/b>-Werte (also <b>A1<\/b>, <b>A2 <\/b>und so weiter):<\/p>\n<pre>Dim i As Integer\r\nFor i = 1 To GetTreeView.Nodes.Count\r\n    Debug.Print GetTreeView.Nodes(i).Key\r\nNext i<\/pre>\n<p>Dies gelingt auch &uuml;ber eine <b>For Each<\/b>-Schleife:<\/p>\n<pre>Dim objNode As MSComctlLib.Node\r\nFor Each objNode In GetTreeView.Nodes\r\n    Debug.Print objNode.Key\r\nNext objNode<\/pre>\n<p>Die <b>Key<\/b>-Eigenschaft liefert den <b>Key<\/b>-Wert, die <b>Text<\/b>-Eigenschaft den angezeigten Text eines Nodes &#8211; das sind die beiden Werte, die wir in der Routine <b>Form_Load <\/b>angelegt haben. Wenn Sie den <b>Key<\/b>-Wert eines Nodes kennen, k&ouml;nnen Sie diesen direkt referenzieren, um etwa seinen Text zu ermitteln:<\/p>\n<pre>Debug.Print GetTreeView.Nodes(\"A5\").Text\r\nWert A5<\/pre>\n<p>Das geht auch noch k&uuml;rzer, weil <b>Text <\/b>die Standardeigenschaft des <b>Node<\/b>-Objekts ist:<\/p>\n<pre>Debug.Print GetTreeView.Nodes(\"A5\")\r\nWert A5<\/pre>\n<p><b>Aktuelles Element referenzieren<\/b><\/p>\n<p>Wenn Sie etwas mit dem aktuell ausgew&auml;hlten TreeView-Element erledigen m&ouml;chten, ist das ganz einfach. Die <b>SelectedItem<\/b>-Eigenschaft des TreeView-Objekts liefert das gew&uuml;nschte Element, auf das Sie auch direkt zugreifen k&ouml;nnen:<\/p>\n<pre>Debug.Print GetTreeView.SelectedItem\r\nWert A5<\/pre>\n<p><b>Ein Element zum aktuellen Element machen<\/b><\/p>\n<p>Wenn Sie den <b>Key <\/b>eines Elements kennen und dieses markieren m&ouml;chten, gelingt dies ebenfalls mit der <b>SelectedItem<\/b>-Eigenschaft:<\/p>\n<pre>GetTreeView.SelectedItem =\r\nGetTreeView.Nodes(\"A2\")<\/pre>\n<p>Das Zuweisen des <b>Key<\/b>-Werts allein reicht nicht aus &#8211; ganz im Gegenteil: Sie weisen der <b>Text<\/b>-Eigenschaft des ausgew&auml;hlten Elements den angegebenen Wert zu.<\/p>\n<p>Folgendes w&uuml;rde zur &auml;nderung des Beispiel-TreeViews aus Bild 5 f&uuml;hren:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_05\/TreeViewImGriff-web-images\/pic005_opt.jpeg\" alt=\"pic005.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5: &auml;nderung des Texts eines TreeView-Elements<\/span><\/b><\/p>\n<pre>GetTreeView.SelectedItem = \"A2\"<\/pre>\n<p>Sie k&ouml;nnen auch &uuml;ber die Ordinalzahl auf Elemente zugreifen.<\/p>\n<p>Den Text des ersten Elements im TreeView erhalten Sie etwa so:<\/p>\n<pre>Debug.Print GetTreeView.Nodes(2)\r\nWert B1<\/pre>\n<p>Wenn Sie diesen Ausdruck der <b>SelectedItem<\/b>-Eigenschaft zuweisen, wird das entsprechende Element markiert:<\/p>\n<pre>GetTreeView.SelectedItem = GetTreeView.Nodes(2)<\/pre>\n<p>Die folgende <b>For&#8230;Next<\/b>-Schleife durchl&auml;uft alle im TreeView-Objekt enthaltenen Elemente und &ouml;ffnet dabei alle Zweige, die bis dato noch nicht sichtbar waren:<\/p>\n<pre>Dim i As Integer\r\nFor i = 1 To GetTreeView.Nodes.Count\r\n    GetTreeView.SelectedItem =\r\n    GetTreeView.Nodes(i)\r\nNext i<\/pre>\n<p><b>Element in Objektvariable speichern<\/b><\/p>\n<p>F&uuml;r diverse Zwecke kann es sinnvoll sein, einen Verweis auf ein Element in einer Variablen zu speichern. Alle bisherigen Beispiele, die der Eigenschaft <b>SelectedItem <\/b>ein Element zuwiesen, k&ouml;nnen Sie auch so umbauen, dass das Ergebnis anschlie&szlig;end &uuml;ber eine Objektvariable direkt referenziert werden kann. Die folgenden drei Zeilen deklarieren eine entsprechende Variable, weisen dieser ein Element zu und machen dieses dann zum aktuell markierten Element:<\/p>\n<pre>Dim objNode As MSComctlLib.Node\r\nSet objNode = GetTreeView.Nodes(10)\r\nGetTreeView.SelectedItem = objNode<\/pre>\n<p><b>Nodes entfernen<\/b><\/p>\n<p>Alle Elemente entfernen Sie ganz einfach mit der <b>Clear<\/b>-Methode der <b>Nodes<\/b>-Auflistung des TreeView-Objekts:<\/p>\n<pre>GetTreeView.Nodes.Clear<\/pre>\n<p>Das L&ouml;schen eines einzelnen Nodes erledigt die <b>Remove<\/b>-Methode der <b>Nodes<\/b>-Auflistung. Diese Methode erwartet den <b>Key<\/b>-Wert eines Elements als Parameter. Wenn Sie diesen kennen, funktioniert das L&ouml;schen so:<\/p>\n<pre>GetTreeView.Nodes.Remove \"A2\"<\/pre>\n<p>Wenn Sie das Element &uuml;ber die Ordinalzahl l&ouml;schen m&ouml;chten, m&uuml;ssen Sie zun&auml;chst den <b>Key <\/b>ermitteln und diesen dann der <b>Remove<\/b>-Methode zuweisen:<\/p>\n<pre>GetTreeView.Nodes.Remove\r\nGetTreeView.Nodes.Item(1).Key<\/pre>\n<p><b>Von einem Element zum n&auml;chsten<\/b><\/p>\n<p>Weiter oben haben Sie bereits erfahren, wie Sie ein Element anhand der Ordinalzahl oder des Keys referenzieren k&ouml;nnen &#8211; zum Beispiel so:<\/p>\n<pre>GetTreeView.Nodes(1)\r\nGetTreeView.Nodes(\"A1\")<\/pre>\n<p>Wie aber gelangen Sie nun beispielsweise zum n&auml;chsten oder vorherigen Element Zum n&auml;chsten unterhalb befindlichen Element &#8211; unabh&auml;ngig von der Ebene &#8211; gelangen Sie durch einfaches Hochz&auml;hlen der Ordinalzahl. Zum Experimentieren statten wir das TreeView-Formular nun zun&auml;chst mit zwei Schaltfl&auml;chen zum Auf- und Abbewegen aus (siehe Bild 6).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_05\/TreeViewImGriff-web-images\/pic006_opt.jpeg\" alt=\"pic006.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6: Mit diesen Schaltfl&auml;chen k&ouml;nnen Sie das markierte Element nach oben und unten verschieben.<\/span><\/b><\/p>\n<p>Den n&ouml;tigen Code f&uuml;r die beiden Schaltfl&auml;chen <b>cmdNachOben <\/b>und <b>cmdNachUnten <\/b>finden Sie in Listing 3. Die beiden Routinen kontrollieren, ob gerade das oberste beziehungsweise unterste Element markiert ist, und simulieren dann einen Zyklus.<\/p>\n<p><b>Von einem Element zum n&auml;chsten Element der gleichen Ebene<\/b><\/p>\n<p>Wenn Sie die Markierung nicht ebenen&uuml;bergreifend bewegen m&ouml;chten, geht es noch einfacher, und zwar mit den Eigenschaften <b>Previous <\/b>und <b>Next<\/b>. Mit dieser Anweisung machen Sie das n&auml;chste Element der gleichen Ebene zum markierten Element:<\/p>\n<pre>objTreeView.SelectedItem =\r\nobjTreeView.SelectedItem.Next<\/pre>\n<p>In die andere Richtung geht es analog mit der <b>Previous<\/b>-Eigenschaft.<\/p>\n<p>Wenn Sie einen &auml;hnlichen Effekt wie im vorherigen Beispiel erreichen m&ouml;chten, mit dem Unterschied, dass nur die Elemente der aktuellen Ebene zyklisch durchlaufen werden, m&uuml;ssen Sie ein wenig tricksen: Mit den Methoden des TreeView-Objekts allein schaffen Sie dies nicht, zumindest nicht auf der obersten Ebene.<\/p>\n<p>Der Grund ist, dass keine Eigenschaft die Anzahl der Elemente der obersten Ebene zur&uuml;ckliefert. <b>Next <\/b>und <b>Previous <\/b>liefern immer einen Verweis auf das jeweils n&auml;chste oder vorherige Element, und wenn es dieses nicht gibt, ist der Wert <b>Nothing<\/b>. Dies m&uuml;ssen Sie abfragen und dann entsprechend wieder zum ersten oder letzten Element springen &#8211; je nachdem, ob Sie gerade am unteren oder oberen Ende angekommen sind.<\/p>\n<p>Wie aber gelangen wir zum ersten oder letzten Element einer Ebene Hierzu verwenden Sie zwei bisher noch nicht zum Einsatz gekommene Eigenschaften: <b>FirstSibling <\/b>und <b>LastSibling<\/b>. Die folgenden Zeilen pr&uuml;fen, ob das n&auml;chste Element vorhanden ist, und springt entweder zu diesem oder es macht das erste Element zum aktuellen Element:<\/p>\n<pre>If Not objTreeView.SelectedItem.Next Is Nothing Then\r\n    objTreeView.SelectedItem =\r\n    objTreeView.SelectedItem.Next\r\nElse\r\n    objTreeView.SelectedItem =\r\n    objTreeView.SelectedItem.FirstSibling\r\nEnd If<\/pre>\n<p>Bei Elementen, die nicht zur ersten Ebene geh&ouml;ren, k&ouml;nnen Sie eine alternative Variante verwenden &#8211; mehr dazu weiter unten.<\/p>\n<p><b>Child-Elemente referenzieren<\/b><\/p>\n<p>Wie aber greifen Sie beispielsweise auf alle <b>Child<\/b>-Elemente eines Elements zu Beginnen wir mit der Anzahl der <b>Child<\/b>-Elemente &#8211; hier des ersten Elements:<\/p>\n<pre> GetTreeView.Nodes.Item(1).Children\r\n5<\/pre>\n<p>Auf das erste Kind greifen Sie mit der <b>Child<\/b>-Eigenschaft zu:<\/p>\n<pre> GetTreeView.Nodes.Item(1).Child\r\nWert B1<\/pre>\n<p>Wenn Sie den ersten Enkel referenzieren m&ouml;chten, also das erste Kind des ersten Kindes, verwenden Sie einfach zweimal die <b>Child<\/b>-Eigenschaft:<\/p>\n<pre> GetTreeView.Nodes.Item(1).Child.Child\r\nWert C1<\/pre>\n<p><b>Ansprechen von Elementen auf gleicher Ebene wie ein anderes Element<\/b><\/p>\n<p>Die Eigenschaften <b>FirstSibling<\/b>, <b>Previous<\/b>, <b>Next <\/b>und <b>LastSibling <\/b>erlauben es, die entsprechenden Elemente relativ zum angegebenen Element zu referenzieren. Sie sind die Pendants zu den Methoden <b>MoveFirst<\/b>, <b>MovePrevious<\/b>, <b>MoveNext <\/b>und <b>MoveLast <\/b>des Recordset-Objekts.<\/p>\n<p><b>Previous <\/b>und <b>Next <\/b>sollten Sie, wie schon in obigen Beispielen angedeutet, vor der Verwendung auf <b>Is Nothing <\/b>pr&uuml;fen. Sonst kann es passieren, dass Sie etwa der Eigenschaft <b>SelectedItem <\/b>den Wert <b>Nothing <\/b>zuordnen und kein Element mehr markiert ist.<\/p>\n<p>Dies w&uuml;rde nach sich ziehen, dass ein Zugriff auf <b>SelectedItem <\/b>Fehler <b>91<\/b>, <b>Objektvariable oder With-Blockvariable nicht festgelegt <\/b>heraufbeschw&ouml;rt.<\/p>\n<p><b>&Uuml;bergeordnetes Element referenzieren<\/b><\/p>\n<p>Das <b>Parent<\/b>-Element eines TreeView-Elements liefert einen Verweis auf das dem angegebenen Element &uuml;bergeordnete Element.<\/p>\n<p>Mit der <b>Parent<\/b>-Eigenschaft k&ouml;nnen Sie beispielsweise den <b>Key<\/b>-Pfad eines Elements ermitteln, also eine Aneinanderreihung aller Keys eines Elements.<\/p>\n<p>Die folgenden Zeilen liefern, untergebracht in der <b>NodeClick<\/b>-Ereignisprozedur des TreeView-Objekts, etwa einen Ausdruck wie <b>A2\\B6\\C30<\/b>:<\/p>\n<pre>Dim strPath As String\r\nDim objNode As MSComctlLib.Node\r\nSet objNode = Node\r\nstrPath = objNode.Key\r\nDo While Not objNode.Parent Is Nothing\r\n    Set objNode = objNode.Parent\r\n    strPath = objNode.Key &amp; \"\\\" &amp; strPath\r\nLoop\r\nDebug.Print strPath<\/pre>\n<p><b>Ermitteln, ob ein Element markiert ist<\/b><\/p>\n<p>Wenn Sie ganz schnell wissen m&ouml;chten, ob ein Element markiert ist, verwenden Sie dazu die <b>Selected<\/b>-Eigenschaft des gew&uuml;nschten Elements. Ein Beispiel f&uuml;r den Direktbereich:<\/p>\n<pre>Debug.Print GetTreeView.Nodes.Item(1).Selected\r\nFalsch<\/pre>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Mit diesem Beitrag haben Sie ausreichend Werkzeug gesammelt, um sich von vorne nach hinten und zur&uuml;ck durch die Elemente eines TreeView-Elements zu bewegen.<\/p>\n<p>Damit sollte es auch einfach m&ouml;glich sein, von externen Elementen aus wie etwa einem Unterformular, das Informationen zum aktuell markierten Element enth&auml;lt, auf dieses Element zuzugreifen und beispielsweise den Nodetext anzupassen, wenn der Benutzer den Inhalt des entsprechenden Felds der zugrunde liegenden Daten im Unterformular anpasst.<\/p>\n<p>Wichtig ist in diesem Zusammenhang, dass Sie sich ein vern&uuml;nftiges System f&uuml;r die Benennung der Keys der einzelnen Elemente &uuml;berlegen.<\/p>\n<p>In der Praxis hat sich die Kombination aus einem Buchstaben, der die Tabelle repr&auml;sentiert, aus der die Daten stammen, und dem Wert des Prim&auml;rschl&uuml;sselfelds als geeignet erwiesen.<\/p>\n<p>Manchmal kann es aber auch sinnvoll sein, den Key vom Root-Element bis zum untersten Child-Element als Kombination der Keys aller Elemente bis zur entsprechenden Ebene zusammenzustellen &#8211; zum Beispiel in der Form A1_B34_C12. So kann man gleich vom aktuellen Element auf die Hierarchie schlie&szlig;en.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>TreeViewImGriff.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{4F4E95FE-F129-4618-8A5E-D292CE2E1369}\/aiu_683.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das TreeView-Steuerelement ist der Platzhirsch unter den Steuerelementen zur Anzeige hierarchischer Daten. Wie man es f&uuml;llt, haben wir in diversen Beitr&auml;gen gezeigt &#8211; aber wie &auml;ndert man darin enthaltene Elemente sp&auml;ter, und wie greift man &uuml;berhaupt auf diese zu Dieser Beitrag beleuchtet, wie Sie beliebige Elemente referenzieren, l&ouml;schen, durchlaufen, ersetzen und ihre Eigenschaften anpassen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662009,66052009,44000023],"tags":[],"class_list":["post-55000683","post","type-post","status-publish","format-standard","hentry","category-662009","category-66052009","category-Mit_Formularen_arbeiten"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>TreeView-Elemente im Griff - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/TreeViewElemente_im_Griff\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TreeView-Elemente im Griff\" \/>\n<meta property=\"og:description\" content=\"Das TreeView-Steuerelement ist der Platzhirsch unter den Steuerelementen zur Anzeige hierarchischer Daten. Wie man es f&uuml;llt, haben wir in diversen Beitr&auml;gen gezeigt - aber wie &auml;ndert man darin enthaltene Elemente sp&auml;ter, und wie greift man &uuml;berhaupt auf diese zu Dieser Beitrag beleuchtet, wie Sie beliebige Elemente referenzieren, l&ouml;schen, durchlaufen, ersetzen und ihre Eigenschaften anpassen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/TreeViewElemente_im_Griff\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T22:17:34+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg09.met.vgwort.de\/na\/00d6a1b7fbfb4427a9e32095bb8dc118\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"15\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/TreeViewElemente_im_Griff\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/TreeViewElemente_im_Griff\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"TreeView-Elemente im Griff\",\"datePublished\":\"2020-05-22T22:17:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/TreeViewElemente_im_Griff\\\/\"},\"wordCount\":2413,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/TreeViewElemente_im_Griff\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/00d6a1b7fbfb4427a9e32095bb8dc118\",\"articleSection\":[\"2009\",\"5\\\/2009\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/TreeViewElemente_im_Griff\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/TreeViewElemente_im_Griff\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/TreeViewElemente_im_Griff\\\/\",\"name\":\"TreeView-Elemente im Griff - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/TreeViewElemente_im_Griff\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/TreeViewElemente_im_Griff\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/00d6a1b7fbfb4427a9e32095bb8dc118\",\"datePublished\":\"2020-05-22T22:17:34+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/TreeViewElemente_im_Griff\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/TreeViewElemente_im_Griff\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/TreeViewElemente_im_Griff\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/00d6a1b7fbfb4427a9e32095bb8dc118\",\"contentUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/00d6a1b7fbfb4427a9e32095bb8dc118\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/TreeViewElemente_im_Griff\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"TreeView-Elemente im Griff\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"TreeView-Elemente im Griff - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/TreeViewElemente_im_Griff\/","og_locale":"de_DE","og_type":"article","og_title":"TreeView-Elemente im Griff","og_description":"Das TreeView-Steuerelement ist der Platzhirsch unter den Steuerelementen zur Anzeige hierarchischer Daten. Wie man es f&uuml;llt, haben wir in diversen Beitr&auml;gen gezeigt - aber wie &auml;ndert man darin enthaltene Elemente sp&auml;ter, und wie greift man &uuml;berhaupt auf diese zu Dieser Beitrag beleuchtet, wie Sie beliebige Elemente referenzieren, l&ouml;schen, durchlaufen, ersetzen und ihre Eigenschaften anpassen.","og_url":"https:\/\/access-im-unternehmen.de\/TreeViewElemente_im_Griff\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T22:17:34+00:00","og_image":[{"url":"http:\/\/vg09.met.vgwort.de\/na\/00d6a1b7fbfb4427a9e32095bb8dc118","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"15\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/TreeViewElemente_im_Griff\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/TreeViewElemente_im_Griff\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"TreeView-Elemente im Griff","datePublished":"2020-05-22T22:17:34+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/TreeViewElemente_im_Griff\/"},"wordCount":2413,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/TreeViewElemente_im_Griff\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/00d6a1b7fbfb4427a9e32095bb8dc118","articleSection":["2009","5\/2009","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/TreeViewElemente_im_Griff\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/TreeViewElemente_im_Griff\/","url":"https:\/\/access-im-unternehmen.de\/TreeViewElemente_im_Griff\/","name":"TreeView-Elemente im Griff - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/TreeViewElemente_im_Griff\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/TreeViewElemente_im_Griff\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/00d6a1b7fbfb4427a9e32095bb8dc118","datePublished":"2020-05-22T22:17:34+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/TreeViewElemente_im_Griff\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/TreeViewElemente_im_Griff\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/TreeViewElemente_im_Griff\/#primaryimage","url":"http:\/\/vg09.met.vgwort.de\/na\/00d6a1b7fbfb4427a9e32095bb8dc118","contentUrl":"http:\/\/vg09.met.vgwort.de\/na\/00d6a1b7fbfb4427a9e32095bb8dc118"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/TreeViewElemente_im_Griff\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"TreeView-Elemente im Griff"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000683","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000683"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000683\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000683"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000683"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000683"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}