| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | |  | PNY präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
|
Autor
|
Thema: Clickereignis auf TreeView Node (2159 mal gelesen)
|
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003 AutoCAD 2021/2022 CAD+T HP ZBook 15 G4, 64-bit, WIN 10 Pro
|
erstellt am: 15. Okt. 2006 13:00 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen! Wie bekommt man ein Clickereignis auf ein TreeView Node hin? Im folgendem Versuch habe ich links eine TreeViewstruktur in der die entsprechenden Layer, etc. angezeigt werden. Nun möchte ich aber erreichen, daß beim Click auf dem Node z.B. Layer, diese in dem rechten ListView inkl. Icon angezeigt werden. Code:
Private Sub UserForm_Initialize() Dim RootNode As MSComctlLib.Node Dim DrawNode As MSComctlLib.Node Dim xNode As MSComctlLib.Node Dim Drawing As AcadDocument TreeView1.ImageList = ImageList1 For Each Drawing In Application.Documents Set RootNode = TreeView1.Nodes.Add(Text:=Drawing.Name, Image:=1) Set xNode = TreeView1.Nodes.Add(RootNode.Index, tvwChild, , Text:="Layer", Image:=2) For Each ActData In Drawing.Layers TreeView1.Nodes.Add xNode, tvwChild, , ActData.Name, Image:=2 Next Set xNode = TreeView1.Nodes.Add(RootNode.Index, tvwChild, , Text:="Linientypen", Image:=3) For Each ActData In Drawing.Linetypes TreeView1.Nodes.Add xNode, tvwChild, , ActData.Name, Image:=3 Next Set xNode = TreeView1.Nodes.Add(RootNode.Index, tvwChild, , Text:="Textstile", Image:=4) For Each ActData In Drawing.TextStyles TreeView1.Nodes.Add xNode, tvwChild, , ActData.Name, Image:=4 Next Next End Sub
Vielen Dank im voraus. Gruß Dirk
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 15. Okt. 2006 13:22 <-- editieren / zitieren --> Unities abgeben:          Nur für Dirk.B
Hallo Dirk, wenn du den Treeview abfüllst speicherst du bei jedem Treeviewnode die "Datenart".
Code:
xNode.Tag = "DRAWING" xNode.Tag = "LAYER" etc
Im Treeview Ereignis Nodeclick wertest du dieses Tag ("Datenart") aus und füllst damit den Listview.Code:
'' Ausschnitt aus Blockinfo Private Sub TreeView_NodeClick(ByVal Node As MSComctlLib.Node) Dim iNode As Node Dim iItem As ListItem Dim iLayer As AcadLayer Dim iBlock As AcadBlock Dim iEntity As AcadEntity Dim xEntity As Long Dim i As Long ' Max tiefe/anzahl für Elemente Const MaxEntity As Long = 1000 ' verwendete Liste speichern Set og_Liste = TreeView Me.BT_Rename.Enabled = False Me.TreeView.LabelEdit = tvwManual ' Angeklicktes Element anzeigen Me.txt_Info = Node.Text '' Debug Info 'Me.Caption = Node.FullPath 'Debug.Print 'Debug.Print "Key :", Node.key 'Debug.Print "Text:", Node.Text 'Debug.Print "Tag :", Node.Tag Select Case Node.Tag Case "ROOT" Me.ListView.ColumnHeaders.Clear Me.ListView.ColumnHeaders.Add 1, "Name", "Kapitel", Me.ListView.Width * 0.99 Me.ListView.ListItems.Clear If Not Node.Child Is Nothing Then Set iNode = Node.Child While Not iNode Is Nothing Set iItem = Me.ListView.ListItems.Add(, iNode.key, iNode.Text) iItem.ToolTipText = "Thema" iItem.Tag = iNode.key Set iNode = iNode.Next Wend End If Case "LAYOUTS" Me.ListView.ColumnHeaders.Clear Me.ListView.ColumnHeaders.Add 1, "Name", "Layout", Me.ListView.Width * 0.5 Me.ListView.ColumnHeaders.Add 2, "Blockname", "Blockname", Me.ListView.Width * 0.47 Me.ListView.ListItems.Clear If Not Node.Child Is Nothing Then Set iNode = Node.Child While Not iNode Is Nothing Set iItem = Me.ListView.ListItems.Add(, iNode.key, iNode.Text) iItem.Tag = "LAYOUT" iItem.SubItems(1) = ThisDrawing.Layouts(iNode.Text).Block.Name Set iNode = iNode.Next Wend End If Case "BLÖCKE" Me.ListView.ColumnHeaders.Clear Me.ListView.ColumnHeaders.Add 1, "Name", "Blockname", Me.ListView.Width * 0.74 Me.ListView.ColumnHeaders.Add 2, "Count", "Inserts", Me.ListView.Width * 0.25 Me.ListView.ListItems.Clear If Not Node.Child Is Nothing Then Set iNode = Node.Child While Not iNode Is Nothing Set iItem = Me.ListView.ListItems.Add(, iNode.key, iNode.Text) iItem.Tag = "BLOCK" iItem.SubItems(1) = TreeView.Nodes(iNode.key & "\Count").Child.Text Set iNode = iNode.Next Wend End If Case "BLOCK", "LAYOUT" If Node.Text <> "Model" Then Me.TreeView.LabelEdit = tvwAutomatic Me.BT_Rename.Enabled = True End If Me.ListView.ColumnHeaders.Clear Me.ListView.ColumnHeaders.Add 1, "Bez", "Bezeichnung", Me.ListView.Width * 0.73 Me.ListView.ColumnHeaders.Add 2, "Count", "Anzahl", Me.ListView.Width * 0.25 Me.ListView.ListItems.Clear ' Layer sub-Node Set iNode = Node.Child Set iItem = Me.ListView.ListItems.Add(, iNode.key, iNode.Text) iItem.SubItems(1) = iNode.Children ' Line sub-Node Set iNode = iNode.Next Set iItem = Me.ListView.ListItems.Add(, iNode.key, iNode.Text) iItem.SubItems(1) = iNode.Children ' Attribute sub-Node Set iNode = iNode.Next Set iItem = Me.ListView.ListItems.Add(, iNode.key, iNode.Text) iItem.SubItems(1) = iNode.Children ' sub_block sub-Node Set iNode = iNode.Next Set iItem = Me.ListView.ListItems.Add(, iNode.key, iNode.Text) iItem.SubItems(1) = iNode.Children ' Anzahl Entitys sub-Node Set iNode = iNode.Next Set iItem = Me.ListView.ListItems.Add(, iNode.key, iNode.Text) iItem.SubItems(1) = iNode.Child.Text ' Anzahl sub-Node Set iNode = iNode.Next If Not iNode Is Nothing Then ' Anzahl gibt es bei Sub-Nodes nicht Set iItem = Me.ListView.ListItems.Add(, iNode.key, "Inserts") iItem.SubItems(1) = iNode.Child.Text End If Case "LAYERS" Me.ListView.ColumnHeaders.Clear Me.ListView.ColumnHeaders.Add 1, "Name", "Layername" Me.ListView.ColumnHeaders.Add 2, "Color", "Farbe", Me.ListView.Width * 0.3 Me.ListView.ColumnHeaders.Add 3, "VISIBLE", "Sichtbar", Me.ListView.Width * 0.2 Me.ListView.ColumnHeaders.Add 4, "FREEZE", "Gefroren", Me.ListView.Width * 0.2 Me.ListView.ListItems.Clear If Not Node.Child Is Nothing Then Set iNode = Node.Child While Not iNode Is Nothing Set iItem = Me.ListView.ListItems.Add(, iNode.key, iNode.Text) iItem.Tag = "LAYER" Set iLayer = ThisDrawing.Layers(iNode.Text) iItem.SubItems(1) = AcadColor(iLayer) iItem.SubItems(2) = IIf(iLayer.LayerOn = True, "JA", "NEIN") iItem.SubItems(3) = IIf(iLayer.Freeze = True, "JA", "NEIN") Set iNode = iNode.Next Wend End If Case "BLOCKLAYER", "LAYER" Me.ListView.ColumnHeaders.Clear Me.ListView.ColumnHeaders.Add 1, "Name", "Layername" Me.ListView.ColumnHeaders.Add 2, "Color", "Farbe", Me.ListView.Width * 0.3 Me.ListView.ColumnHeaders.Add 3, "VISIBLE", "Sichtbar", Me.ListView.Width * 0.2 Me.ListView.ColumnHeaders.Add 4, "FREEZE", "Gefroren", Me.ListView.Width * 0.2 Me.ListView.ListItems.Clear Me.BT_Rename.Enabled = True Set iItem = Me.ListView.ListItems.Add(, Node.key, Node.Text) iItem.Tag = "LAYER" Set iLayer = ThisDrawing.Layers(Node.Text) iItem.SubItems(1) = AcadColor(iLayer) iItem.SubItems(2) = IIf(iLayer.LayerOn = True, "JA", "NEIN") iItem.SubItems(3) = IIf(iLayer.Freeze = True, "JA", "NEIN") Case "ENTITYS" Me.ListView.ColumnHeaders.Clear Me.ListView.ColumnHeaders.Add 1, "Name", "Typ", Me.ListView.Width * 0.4 Me.ListView.ColumnHeaders.Add 2, "Layer", "Layer", Me.ListView.Width * 0.2 Me.ListView.ColumnHeaders.Add 3, "Linienart", "LinenTyp", Me.ListView.Width * 0.2 Me.ListView.ColumnHeaders.Add 4, "Farbe", "Farbe", Me.ListView.Width * 0.2 Me.ListView.ListItems.Clear If Node.Parent.Tag = "LAYOUT" Then Set iBlock = ThisDrawing.Layouts(Node.Parent.Text).Block Else Set iBlock = ThisDrawing.Blocks(Node.Parent.Text) End If xEntity = 0 For Each iEntity In iBlock xEntity = xEntity + 1 If xEntity > MaxEntity Then Set iItem = Me.ListView.ListItems.Add(, "Ent" & xEntity, "weitere.......") Exit For End If Set iItem = Me.ListView.ListItems.Add(, "ENT" & xEntity, iEntity.ObjectName) iItem.SubItems(1) = iEntity.Layer iItem.SubItems(2) = iEntity.Linetype iItem.SubItems(3) = AcadColor(iEntity) Next iEntity Case Else Me.ListView.ColumnHeaders.Clear End Select End Sub
Stelli------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 17. Okt. 2006 21:26 <-- editieren / zitieren --> Unities abgeben:         
Hallo Stelli! Müßte es nicht auch so gehen?
Code:
Public Sub UserForm_Initialize() Dim RootNode As MSComctlLib.Node Dim DrawNode As MSComctlLib.Node Dim xNode As MSComctlLib.Node Dim Drawing As AcadDocumentTreeView1.ImageList = ImageList1 For Each Drawing In Application.Documents Set RootNode = TreeView1.Nodes.Add(Text:=Drawing.Name, Image:=1) Set xNode = TreeView1.Nodes.Add(RootNode.Index, tvwChild, , Text:="Layer", Image:=2) xNode.Tag = "Layer" Set xNode = TreeView1.Nodes.Add(RootNode.Index, tvwChild, , Text:="Linientypen", Image:=3) xNode.Tag = "Linientypen" Set xNode = TreeView1.Nodes.Add(RootNode.Index, tvwChild, , Text:="Textstile", Image:=4) xNode.Tag = "Textstile" Next End Sub Public Sub TreeView_nodeClick(ByVal Node As MSComctlLib.Node) Dim ActLayer As AcadLayer Dim ActLinie As AcadLine Dim ActText As AcadText
On Error Resume Next Select Case xNode.Tag Case "Layer" For Each ActLayer In ThisDrawing.Layers ListView1.ListItems.Add Text:=ActLayer.Name Next Case "Linientypen" For Each ActLinie In ThisDrawing.Linetypes ListView1.ListItems.Add Text:=ActLinie.Name Next Case "Textstile" For Each ActText In ThisDrawing.TextStyles ListView1.ListItems.Add Text:=ActText.Name Next End Select End Sub
Oder wo liegt mein Fehler? Gruß Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 18. Okt. 2006 10:35 <-- editieren / zitieren --> Unities abgeben:          Nur für Dirk.B
Hallo Dirk, stell doch mal die Eigenschaft Listview1.view=lvwReport und lösche for dem Füllen die Columnheaders mit Listview1.ColumnHeaders.Clear und füge eine Spalte mit ListView1.ColumnHeaders.Add 1, "Layer", "Layer", ListView1.Width * 0.99 ein. Vor allem vor dem Füllen neuer Elemente die alten mit ListView1.ListItems.Clear entfernen. Stelli ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 19. Okt. 2006 13:46 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen! Hier mal der gesamte Code. Was mache ich falsch, bzw. wo liegt der Fehler? Clicke ich im TreeView auf "Layer", "Linientypen" etc. passiert nichts im Bereich ListView. Code:
Private Sub UserForm_Initialize() Dim RootNode As MSComctlLib.Node Dim DrawNode As MSComctlLib.Node Dim Drawing As AcadDocument TreeView1.ImageList = ImageList1 For Each Drawing In Application.Documents Set RootNode = TreeView1.Nodes.Add(Text:=Drawing.Name, Image:=1) Set xNode = TreeView1.Nodes.Add(RootNode.Index, tvwChild, , Text:="Layer", Image:=2) xNode.Tag = "Layer" ''''''''''''''''''For Each ActData In Drawing.Layers '''''''''''''''''' TreeView1.Nodes.Add xNode, tvwChild, , ActData.Name, Image:=2 ''''''''''''''''''Next Set xNode = TreeView1.Nodes.Add(RootNode.Index, tvwChild, , Text:="Linientypen", Image:=3) xNode.Tag = "Linientypen" ''''''''''''''''''For Each ActData In Drawing.Linetypes '''''''''''''''''' TreeView1.Nodes.Add xNode, tvwChild, , ActData.Name, Image:=3 ''''''''''''''''''Next Set xNode = TreeView1.Nodes.Add(RootNode.Index, tvwChild, , Text:="Textstile", Image:=4) xNode.Tag = "Textstile" ''''''''''''''''''For Each ActData In Drawing.TextStyles '''''''''''''''''' TreeView1.Nodes.Add xNode, tvwChild, , ActData.Name, Image:=4 ''''''''''''''''''Next Next End Sub Private Sub TreeView_nodeClick(ByVal Node As MSComctlLib.Node) On Error Resume NextDim ActLayer As AcadLayer Dim ActLinie As AcadLine Dim ActText As AcadText Select Case xNode.Tag Case "Layer" ListView1.View = lvwReport ListView1.ListItems.Clear ListView1.ColumnHeaders.Clear ListView1.ColumnHeaders.Add 1, "Layer", "Layer", ListView1.Width * 0.99 For Each ActLayer In ThisDrawing.Layers ListView1.ListItems.Add Text:=ActLayer.Name Next Case "Linientypen" ListView1.View = lvwReport ListView1.ListItems.Clear ListView1.ColumnHeaders.Clear ListView1.ColumnHeaders.Add 1, "Linientypen", "Linientypen", ListView1.Width * 0.99 For Each ActLinie In ThisDrawing.Linetypes ListView1.ListItems.Add Text:=ActLinie.Name Next Case "Textstile" ListView1.View = lvwReport ListView1.ListItems.Clear ListView1.ColumnHeaders.Clear ListView1.ColumnHeaders.Add 1, "Textstile", "Textstile", ListView1.Width * 0.99 For Each ActText In ThisDrawing.TextStyles ListView1.ListItems.Add Text:=ActText.Name Next End Select End Sub
In dem Bereich Eigenschaften habe ich bei beiden Steuerelementen in den Grundeinstellungen nichts verändert. Gruß Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002 AutoCAD ACA 2024 Solidworks 2022 Sp5 Enterprise PDM 2022 Sp5 Pascam Woodworks Visual Studio 2017 Pro Windows 10 64Bit Dell Precision 3660 Intel Core i9-12900K 32 GB Arbeitsspeicher 2x Dell U2415
|
erstellt am: 19. Okt. 2006 17:33 <-- editieren / zitieren --> Unities abgeben:          Nur für Dirk.B
Hallo Dirk, Irgendwoher kenne ich das doch... Wenn du schon ein Beispiel aus nem Buch nimmst solltest du es auch genau machen. Hier ist der Code für das Anklicken der Einträge: Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node) Dim ChildNode As MSComctlLib.Node ListBox1.Clear If Node.Children = 0 Then Exit Sub Set ChildNode = Node.Child Do ListBox1.AddItem ChildNode.Text Set ChildNode = ChildNode.Next If TypeName(ChildNode) = "Nothing" Then Exit Do Loop End Sub Du musst aber auf die Einträge klicken, damit im Listview etwas angezeigt wird. Wenn du auf das Plu-Zeichen klickst wird das Treeview ausgeklappt. Gruß, Carsten
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 20. Okt. 2006 07:12 <-- editieren / zitieren --> Unities abgeben:         
Hallo und guten morgen Carsten! Den ersten Teil "Private Sub UserForm_Initialize()" habe ich aus dem Buch "AutoCAD programmieren mit VBA". Zu dem zweiten Teil "Private Sub TreeView1_nodeClick(ByVal Node As MSComctlLib.Node)" habe ich verschiedene Dinge aus dem Buch probiert, aber leider ohne Erfolg. Ich habe das Test-Progrämmchen mal angehangen und würde Dich bitten mal zu schauen, wo ich mich da aufhänge und selber im Weg stehe. Vielen Dank im voraus. Gruß Dirk
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003 AutoCAD 2021/2022 CAD+T HP ZBook 15 G4, 64-bit, WIN 10 Pro
|
erstellt am: 20. Okt. 2006 13:22 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen! Oft sind es die kleinen Dinge die einen ärgern können. Fehler war:
Code:
Select Case xNode.Tag
ohne "x" gehts
Code:
Select Case Node.Tag
Nun werden die Layer, Linietypen und Textstile im ListView angezeigt. Jetzt fehlt mir noch die Unterscheidung, aus welcher Zeichnung ich gerade die Elemente abrufe. So bis jetzt, werden immer die aus der zuerst angeklickten genommen.
Code:
Private Sub UserForm_Initialize() Dim RootNode As MSComctlLib.Node Dim DrawNode As MSComctlLib.Node Dim xNode As MSComctlLib.Node Dim Drawing As AcadDocument TreeView1.ImageList = ImageList1 For Each Drawing In Application.Documents Set RootNode = TreeView1.Nodes.Add(Text:=Drawing.Name, Image:=1) Set xNode = TreeView1.Nodes.Add(RootNode.Index, tvwChild, , Text:="Layer", Image:=2) xNode.Tag = "Layer" Set xNode = TreeView1.Nodes.Add(RootNode.Index, tvwChild, , Text:="Linientypen", Image:=3) xNode.Tag = "Linientypen" Set xNode = TreeView1.Nodes.Add(RootNode.Index, tvwChild, , Text:="Textstile", Image:=4) xNode.Tag = "Textstile" Next End SubPrivate Sub TreeView1_nodeClick(ByVal Node As MSComctlLib.Node) On Error Resume Next Dim ActLayer As AcadLayer Dim ActLinie As AcadLineType Dim ActText As AcadTextStyle Dim Drawing1 As AcadDocument For Each Drawing1 In Application.Documents Select Case Node.Tag Case "Layer" ListView1.ListItems.Clear ListView1.View = lvwReport ListView1.ColumnHeaders.Clear ListView1.ColumnHeaders.Add 1, "Layer", "Layer", ListView1.Width * 0.99 For Each ActLayer In Drawing1.Layers ListView1.ListItems.Add Text:=ActLayer.Name Next Case "Linientypen" ListView1.ListItems.Clear ListView1.View = lvwReport ListView1.ColumnHeaders.Clear ListView1.ColumnHeaders.Add 1, "Linientypen", "Linientypen", ListView1.Width * 0.99 For Each ActLinie In Drawing1.Linetypes ListView1.ListItems.Add Text:=ActLinie.Name Next Case "Textstile" ListView1.ListItems.Clear ListView1.View = lvwReport ListView1.ColumnHeaders.Clear ListView1.ColumnHeaders.Add 1, "Textstile", "Textstile", ListView1.Width * 0.99 For Each ActText In Drawing1.TextStyles ListView1.ListItems.Add Text:=ActText.Name Next End Select Next End Sub
siehe Bildchen. Wie bekomme ich da noch die Unterscheidung hin? Gruß Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 20. Okt. 2006 13:37 <-- editieren / zitieren --> Unities abgeben:          Nur für Dirk.B
Hallo Dirk, im Parent Node des Layers hat du doch den Zeichnungsnamen. Node.Parent.Text Du kannst auch bei befüllen das Dokumentobject an das Tag des Nodes hängen. Ein Tag hat den Typ Variant. Also kannst du nicht nur Texte sondern auch ein Object anhängen.
Code:
RootNode = TreeView1.Nodes.Add(Text:=Drawing.Name, Image:=1) set RootNode.Tag = Drawing
Da kannt du bei der Auswertung mit
Code:
set Drawing = node.parent.Tag for each Layer in Drawing 'usw.
drauf zugreifen.Stelli ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 20. Okt. 2006 13:59 <-- editieren / zitieren --> Unities abgeben:         
Hallo Stelli! Perfekt. So gehts.
Code:
... Set RootNode = TreeView1.Nodes.Add(Text:=Drawing.Name, Image:=1) Set RootNode.Tag = Drawing ... ------------------------------- ... Select Case Node.Tag Case "Layer" ListView1.ListItems.Clear ListView1.View = lvwReport ListView1.ColumnHeaders.Clear ListView1.ColumnHeaders.Add 1, "Layer", "Layer", ListView1.Width * 0.99 Set Drawing1 = Node.Parent.Tag For Each ActLayer In Drawing1.Layers ListView1.ListItems.Add Text:=ActLayer.Name Next
Danke. Gruß Dirk
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003 AutoCAD 2021/2022 CAD+T HP ZBook 15 G4, 64-bit, WIN 10 Pro
|
erstellt am: 21. Okt. 2006 20:08 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen! Wie bekomme ich jetzt vor dem Layer im ListView ein Icon aus der ImageList1 plaziert? Ich habe es mal so probiert,geht leider aber nicht.
Code:
... Dim Listi As ListItem ... ... Set ListView1.Icons = ImageList1 Set ListView1.SmallIcons = ImageList1 ListView1.Sorted = True ... For Each Drawing1 In Application.Documents Select Case Node.Tag Case "Layer" ListView1.ListItems.Clear ListView1.View = lvwReport ListView1.ColumnHeaders.Clear ListView1.ColumnHeaders.Add 1, "Layer", "Layer", ListView1.Width * 0.1 Set Drawing1 = Node.Parent.Tag For Each ActLayer In Drawing1.Layers ListView1.ListItems.Add Text:=ActLayer.Name Listi.SmallIcon = 2 Next ...
Gruß Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 22. Okt. 2006 11:35 <-- editieren / zitieren --> Unities abgeben:          Nur für Dirk.B
|
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 22. Okt. 2006 13:39 <-- editieren / zitieren --> Unities abgeben:         
Hallo Stelli! Danke für die Info! Ich habe es mal so versucht, jedoch ohne Erfolg.
Code:
Private Sub TreeView1_nodeClick(ByVal Node As MSComctlLib.Node)Dim ActLayer As AcadLayer Dim ActLinie As AcadLineType Dim ActText As AcadTextStyle Dim Test As ListView Dim Drawing1 As AcadDocument Dim LV As ListItem Set ListView1.Icons = ImageList1 Set ListView1.SmallIcons = ImageList1 ListView1.Sorted = True On Error Resume Next For Each Drawing1 In Application.Documents Select Case Node.Tag Case "Layer" ListView1.ListItems.Clear ListView1.View = lvwReport ListView1.ColumnHeaders.Clear ListView1.ColumnHeaders.Add 1, "Layer", "Layer", ListView1.Width * 0.1 Set Drawing1 = Node.Parent.Tag For Each ActLayer In Drawing1.Layers Set LV = ListView1.ListItems.Add(Text:=ActLayer.Name) LV.Icon = 1 ' ' ListView1.ListItems.Add Text:=ActLayer.Name Icon:=1 'oder 'Set Listi = ListView1.ListItems.Add(Text:=ActLayer.Name) 'Listi.Icon = 1 Next
Das Iconsymbol vor dem Layer wird nicht angezeigt, sihe Bildchen. Gruß Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 22. Okt. 2006 14:02 <-- editieren / zitieren --> Unities abgeben:          Nur für Dirk.B
|
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 22. Okt. 2006 21:17 <-- editieren / zitieren --> Unities abgeben:         
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |