Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Microsoft TreeViewControl ?
zurück: Zugriffsrechte für verschiedene Nutzer weiter: Gleiche Datei von verschieden Laufwerken öffnen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Bitte Status wählen ! Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
KleinerPrinz
Ein Schaf, zeichne mir ein Schaf


Verfasst am:
05. Sep 2006, 15:14
Rufname:

Microsoft TreeViewControl ? - Microsoft TreeViewControl ?

Nach oben
       

Hallo zusammen,

ich möchte gerne das Microsoft TreeViewControl in einer Userform verwenden.
Leider habe ich darüber nichts in der Hilfe gelesen.

Kennt sich jemand aus, wie man das verwendet, bzw. wo kann man
darüber etwas nachlesen kann? Oder gibt es sogar Beispielcodes?

Vielen Dank für die Hilfe
Gruß, kleinerPrinz
AresDamokles
Programmierer (VB/C++)


Verfasst am:
05. Sep 2006, 15:35
Rufname:


AW: Microsoft TreeViewControl ? - AW: Microsoft TreeViewControl ?

Nach oben
       

hmm gut das ich grad nach der Doku für das ListView gesucht hab...

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cmctl198/html/vbobjtreeview.asp

Und BeispielCode? kommt sofort

_________________
Wer lesen kann ist klar im Vorteil...
---
[sTo] Silent Tactical Operations >> sto-clan.de
AresDamokles
Programmierer (VB/C++)


Verfasst am:
05. Sep 2006, 15:54
Rufname:

AW: Microsoft TreeViewControl ? - AW: Microsoft TreeViewControl ?

Nach oben
       

Hoffe du kannst was damit anfangen:

Das hier in ein Modul:

Code:

Option Explicit

Global Const MAX_PATH = 260
Global Const OFS_MAXPATHNAME = 128
Global Const MAXDWORD = 2 ^ 32 - 1

Type SHFILEINFO
   hIcon As Long
   iIcon As Long
   dwAttributes As Long
   szDisplayName As String * MAX_PATH
   szTypeName As String * 80
End Type

Type FILETIME
        dwLowDateTime As Long
        dwHighDateTime As Long
End Type

Type SYSTEMTIME
  wYear As Integer
  wMonth As Integer
  wDayOfWeek As Integer
  wDay As Integer
  wHour As Integer
  wMinute As Integer
  wSecond As Integer
  wMilliseconds As Integer
End Type

Type WIN32_FIND_DATA
  dwFileAttributes As Long
  ftCreationTime As FILETIME
  ftLastAccessTime As FILETIME
  ftLastWriteTime As FILETIME
  nFileSizeHigh As Long
  nFileSizeLow As Long
  dwReserved0 As Long
  dwReserved1 As Long
  cFileName As String * MAX_PATH
  cAlternate As String * 14
End Type

Global Const FILE_ATTRIBUTE_ARCHIVE = &H20
Global Const FILE_ATTRIBUTE_COMPRESSED = &H800
Global Const FILE_ATTRIBUTE_HIDDEN = &H2
Global Const FILE_ATTRIBUTE_NORMAL = &H80
Global Const FILE_ATTRIBUTE_READONLY = &H1
Global Const FILE_ATTRIBUTE_SYSTEM = &H4
Global Const FILE_ATTRIBUTE_TEMPORARY = &H100
Global Const FILE_ATTRIBUTE_DIRECTORY = &H10

Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long

Global gCurrIndex As Long
Global gTVSelect As Long

Dim NodX As Node
Dim TNode As Node

Dim LRes As Long

Function SuchenDirExplore(cRootPath As String, cFilter As String, TV As TreeView, iIndex As Long)
  Dim cDir As String
  Dim nPosition As Long
 
  Dim nError As Long
 
  Dim dummy As Long
  Dim hFile As Long
  Dim fFind As WIN32_FIND_DATA
 
  Dim TNode As Node
 
  If cFilter = "" Then
    cFilter = "*.*"
  End If
 
  '
  While Right$(cRootPath, 1) = "\"
    'alle Schrägstriche abspalten
    cRootPath = Left$(cRootPath, Len(cRootPath) - 1)
  Wend
 
  On Error GoTo SearchErr
 
  hFile = FindFirstFile(cRootPath & "\*", fFind)
 
  If hFile <> 0 Then
   
    cDir = Mid$(fFind.cFileName, 1, InStr(fFind.cFileName, Chr(0)) - 1)
   
    Do While cDir <> ""
 
      If (cDir <> ".") And (cDir <> "..") Then
       
          If (fFind.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = 16 Then
           
            Set NodX = TV.Nodes.Add(iIndex, tvwChild, , Trim$(cDir), 0)
              NodX.Tag = Trim$(cRootPath + "\" + cDir)
              iIndex = NodX.Index
           
            Set NodX = TV.Nodes.Add(iIndex, tvwChild, , "~~!!Dummie", 0)
              NodX.Tag = "~~!!"
           
            Set TNode = TV.Nodes(iIndex)
            If TNode.Parent Is Nothing Then
              DoEvents
            Else
              iIndex = TNode.Parent.Index
            End If
     
          End If
       
      End If
     
      DoEvents
      dummy = FindNextFile(hFile, fFind)
      If dummy <> 0 Then
        cDir = Mid$(fFind.cFileName, 1, InStr(fFind.cFileName, Chr(0)) - 1)
      Else
        cDir = ""
      End If
           
    Loop
     
    LRes = FindClose(hFile)
    If LRes = 0 Then
      'MsgBox "FindClose failed. SearchDir"
    End If
   
  End If
 
  Exit Function
 
SearchErr:

  nError = Err.Number
 
  Select Case Err.Number
    Case 5
      Resume Next
    Case 52
      Resume Next
    Case Else
      '
  End Select
 
End Function


Und das hier in die UF

Code:

Option Explicit

Dim strFilter() As String
Dim nFCount As Long

Dim NodX As Node

Private Sub TreeView1_DblClick()
  Dim cPath As String
 
  If TreeView1.Nodes.Count < 1 Then
    Exit Sub
  End If
 
  If gTVSelect = TreeView1.SelectedItem.Index Then
    Exit Sub
  End If
 
  gTVSelect = TreeView1.SelectedItem.Index
 
  cPath = TreeView1.SelectedItem.FullPath
 
  If cPath <> "" Then
   
    'ListView1.ListItems.Clear
    gCurrIndex = TreeView1.SelectedItem.Index
   
    If Not (TreeView1.Nodes(gCurrIndex).Child Is Nothing) Then
      If TreeView1.Nodes(gCurrIndex).Child.Text = "~~!!Dummie" Then
        TreeView1.Nodes.Remove (TreeView1.Nodes(gCurrIndex).Child.Index)
        Call SuchenDirExplore(TreeView1.SelectedItem.FullPath, "*.*", TreeView1, gCurrIndex)
      End If
    End If
   
  End If
 
  Me.Enabled = True
 
End Sub

Private Sub TreeView1_Expand(ByVal Node As MSComctlLib.Node)
  Dim i As Long
  Dim SaveIndex As Long
 
  SaveIndex = gCurrIndex
  gCurrIndex = Node.Index
 
  If Not (Node.Child Is Nothing) Then
    If Node.Child.Text = "~~!!Dummie" Then
      TreeView1.Nodes.Remove (Node.Child.Index)
      Call SuchenDirExplore(Node.FullPath, "*.*", TreeView1, gCurrIndex)
    End If
  End If
 
  gCurrIndex = SaveIndex
 
End Sub

Function RefreshTree()
 
  TreeView1.Nodes.Clear
 
  TreeView1.Enabled = False
  Set NodX = TreeView1.Nodes.Add(, , , "C:", 0)
  NodX.Tag = "C:"
 
  NodX.Expanded = True
  gCurrIndex = 1
 
  Call SuchenDirExplore("C:", "*.*", TreeView1, gCurrIndex)
 
  TreeView1.Enabled = True
  TreeView1.SelectedItem = TreeView1.Nodes(1)
 
End Function

Private Sub UserForm_Click()

End Sub

Private Sub UserForm_Initialize()
 
  RefreshTree
 
End Sub

_________________
Wer lesen kann ist klar im Vorteil...
---
[sTo] Silent Tactical Operations >> sto-clan.de
KleinerPrinz
Ein Schaf, zeichne mir ein Schaf


Verfasst am:
05. Sep 2006, 16:16
Rufname:

AW: Microsoft TreeViewControl ? - AW: Microsoft TreeViewControl ?

Nach oben
       

Hallo AresDamokles,

ja, der Code sieht vorerst mal gut aus.
Da muß ich mich durchbeißen Smile

Denn ich benötige nicht den Dateibaum,
sondern möchte was eigenes stricken.

Aber als Beispiel ist das schon mal sehr gut 8)

Vielen Dank, Gruß
kleinerPrinz
Gast



Verfasst am:
06. Sep 2006, 13:22
Rufname:


AW: Microsoft TreeViewControl ? - AW: Microsoft TreeViewControl ?

Nach oben
       

Hallo AresDamokles,

habe es jetzt rausgefunden, wie ich es benötige.
Die einfachste Möglichkeit ist so:

Code:
Private Sub UserForm_Initialize()
  Dim NodMy As Node
  Set NodMy = TreeView1.Nodes.Add(, , , "Begrüßung", 0)
  Set NodMy = TreeView1.Nodes.Add(, , , "Verabschiedung", 0)
  Set NodMy = TreeView1.Nodes.Add(1, tvwChild, , "Hallo", 0)
  Set NodMy = TreeView1.Nodes.Add(1, tvwChild, , "Guten Tag", 0)
  Set NodMy = TreeView1.Nodes.Add(1, tvwChild, , "Grüß Gott", 0)
  Set NodMy = TreeView1.Nodes.Add(2, tvwChild, , "Tschüss", 0)
  Set NodMy = TreeView1.Nodes.Add(2, tvwChild, , "Wiedersehen", 0)
End Sub


Das ist der Code in der Form. Im Modul benötige ich für dieses Beispiel keinen Code.
Wichtig war hier die Logik, wie welche Untergruppen (Child) welchen Hauptgruppen zugeordnet werden können.

So passt das schonmal Very Happy

Gruß,
kleinerPrinz
AresDamokles
Programmierer (VB/C++)


Verfasst am:
06. Sep 2006, 14:41
Rufname:

AW: Microsoft TreeViewControl ? - AW: Microsoft TreeViewControl ?

Nach oben
       

Ich dachte halt das das Explorer Beispiel am anschaulichsten ist... Das Modul ist ja auch nur für dieses Beispiel wichtig...

wichtig ist vielleicht noch das du nach dem Set Node = ... über Node.Index den Wert erhälst mit dem du dann die Childs anhängen kannst... falls das ganze mal nicht statisch generiert wird...

_________________
Wer lesen kann ist klar im Vorteil...
---
[sTo] Silent Tactical Operations >> sto-clan.de
bst
Programmierer


Verfasst am:
06. Sep 2006, 15:01
Rufname: Bernd
Wohnort: Ilsfeld

AW: Nur zur Info - AW: Nur zur Info

Nach oben
       

Auch Hallo,

siehe auch: http://www.donkarl.com/index.htm?/FAQ/FAQ6VBA.htm

Insbesondere der Artikel zu TreeView ist M.E. eine nette Einführung.

http://www.donkarl.com/AEK/AEKDownloads/AEK3_TreeView.zip

cu, Bernd
KleinerPrinz
Ein Schaf, zeichne mir ein Schaf


Verfasst am:
07. Sep 2006, 14:41
Rufname:

AW: Microsoft TreeViewControl ? - AW: Microsoft TreeViewControl ?

Nach oben
       

Hallo zusammen,

vielen Dank erst mal für die Hilfe.
Ich bin jetzt schon einen GROSSEN Schritt weiter.

Allerdings habe ich festgestellt, dass man die Daten aus
TreeView1.Nodes(5).Checked nur in TreeView1_Click() abfragen kann.
Nicht aber z.B. in CommandButton1_Click()
Warum auch immer Rolling Eyes

Wobei noch anzumerken wäre, dass Nodes(5) nicht unbedingt der Eintrag sein muß, den ich anklicke.
Also auch z.B. Nodes(4) hat dann noch den korrekten Wert.


Viele Grüße,
kleinerPrinz
AresDamokles
Programmierer (VB/C++)


Verfasst am:
08. Sep 2006, 10:38
Rufname:

AW: Microsoft TreeViewControl ? - AW: Microsoft TreeViewControl ?

Nach oben
       

Hmm also mir fällt grad kein Grund ein warum die Abfrage auf Checked im Button_Click nicht gehen sollte. Hab in meiner UF kein Problem damit.

Code:
Private Sub CommandButton1_Click()
   
    If TreeView1.Nodes(5).Checked Then
        DoEvents
    End If
   
End Sub

_________________
Wer lesen kann ist klar im Vorteil...
---
[sTo] Silent Tactical Operations >> sto-clan.de
KleinerPrinz
Ein Schaf, zeichne mir ein Schaf


Verfasst am:
08. Sep 2006, 12:16
Rufname:

AW: Microsoft TreeViewControl ? - AW: Microsoft TreeViewControl ?

Nach oben
       

Hallo AresDamokles,

ich habs jetzt rausgefunden:

Ich habe in meiner UserForm noch das MultiPage-Steuerelement.
Wenn schon kompliziert, dann gescheit Laughing

Das TreeView1 befindet sich auf Seite 1. Der CommandButton1 auf Seite 2.
Wenn ich nun auf Seite 1 bin und im TreeView was ankreuze und dann auf Seite 2
gehe und anschließend auf Seite 1 zurück, dann ist der TreeView wieder "Jungfräulich" und der Hacken verschwunden.

Warum das jedoch so ist, habe ich noch nicht herausgefunden.

Gruß,
kleinerPrinz
AresDamokles
Programmierer (VB/C++)


Verfasst am:
08. Sep 2006, 13:34
Rufname:

AW: Microsoft TreeViewControl ? - AW: Microsoft TreeViewControl ?

Nach oben
       

Schau mal wo du das TreeView initialisierst. Kann sein das das beim Page Wechsel nochmal durchläuft?
_________________
Wer lesen kann ist klar im Vorteil...
---
[sTo] Silent Tactical Operations >> sto-clan.de
KleinerPrinz
Ein Schaf, zeichne mir ein Schaf


Verfasst am:
08. Sep 2006, 15:56
Rufname:

AW: Microsoft TreeViewControl ? - AW: Microsoft TreeViewControl ?

Nach oben
       

Hallo AresDamokles,

das TreeView wird in UserForm_Activate() initialisiert.
Dies wird beim Page Wechsel nicht aufgerufen (und
auch sonst keine weiteren Codes).

Und jetzt? Rolling Eyes

Gruß,
kleinerPrinz
AresDamokles
Programmierer (VB/C++)


Verfasst am:
08. Sep 2006, 16:08
Rufname:

AW: Microsoft TreeViewControl ? - AW: Microsoft TreeViewControl ?

Nach oben
       

OK, das ist seltsam... bei mir macht er das gleiche... nur das Excel beim 2. Wechsel von Page 1 nach 2 nach 1 abraucht und mit
"Automatisierungsfehler. Das Aufgerufene Objekt wurde von den Clients getrennt." den Geist aufgibt...

_________________
Wer lesen kann ist klar im Vorteil...
---
[sTo] Silent Tactical Operations >> sto-clan.de
maninweb
Microsoft Excel MVP 2014


Verfasst am:
09. Sep 2006, 13:01
Rufname: maninweb
Wohnort: Aachen

AW: Microsoft TreeViewControl ? - AW: Microsoft TreeViewControl ?

Nach oben
       

Hi...

Verweis ist, denke ich wohl, gesetzt. Allerdings macht MS Excel Probleme,
gerade wenn MultiPages und Treeviews bzw. Listviews verwendet werden
deren Version kleiner 6 ist. Unter Excel 2000 & 2003 treten keine gravie-
renden Probleme mehr auf, wenn der Verweis auf Microsoft Common
Controls 6.0 (SP6), Datei mscomctl.ocx in System32 (Win XP) gesetzt
ist.

Gruss

_________________
Der größte Aberglaube der Gegenwart ist der Glaube an die Vorfahrt.
Jacques Tatischeff - auch bekannt als Jacques Tati
20FCC4FD0E3240C59522E3F0C4695941
KleinerPrinz
Ein Schaf, zeichne mir ein Schaf


Verfasst am:
11. Sep 2006, 09:53
Rufname:


AW: Microsoft TreeViewControl ? - AW: Microsoft TreeViewControl ?

Nach oben
       

Hallo maninweb,

Das würde einiges erklären.
Ich verwende alle Versionen über 6.0 und Excel 2000.

Nochmals der Fehler:
Beim Wechsel der MultiPage auf eine andere Seite
vergisst er die Hacken der Checks im TreeView.

Ich habe es jetzt so gelöst, dass ich die Checks sofort
in Boolean Variablen speichere und bei jedem Wechsel
der MultiPage aktualisiere. Anders wird es wohl nicht gehen.

Gruß,
kleinerPrinz
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel VBA (Makros): Excel ADODB Connection Problem (Microsoft Dynamics NAV) 3 focus86 227 18. Sep 2013, 15:22
focus86 Excel ADODB Connection Problem (Microsoft Dynamics NAV)
Keine neuen Beiträge Excel VBA (Makros): "Microsoft Excel funktioniert nicht mehr ..." 4 JensH 819 06. Aug 2013, 14:45
Gast "Microsoft Excel funktioniert nicht mehr ..."
Keine neuen Beiträge Excel VBA (Makros): Microsoft Query - Troz richtiger Code keine Ausgabe 1 Desby 103 20. Jun 2013, 12:40
Desby Microsoft Query - Troz richtiger Code keine Ausgabe
Keine neuen Beiträge Excel VBA (Makros): %appdata%\microsoft\Excel\XLStart\Mappe löschen 6 nisol 212 03. Mai 2013, 12:48
nisol %appdata%\microsoft\Excel\XLStart\Mappe löschen
Keine neuen Beiträge Excel VBA (Makros): Microsoft Office Document Imaging per VBA steuern 7 SvenHH 309 05. Feb 2013, 11:46
SvenHH Microsoft Office Document Imaging per VBA steuern
Keine neuen Beiträge Excel VBA (Makros): Microsoft Excel Fenster (nicht aktualisieren) drücken über 6 oggyr32 392 16. Feb 2012, 09:21
oggyr32 Microsoft Excel Fenster (nicht aktualisieren) drücken über
Keine neuen Beiträge Excel VBA (Makros): Microsoft Forms 'ungültiger Eigenschaftenwert' 3 ricoschatz 712 11. Nov 2009, 01:39
ricoschatz Microsoft Forms  'ungültiger Eigenschaftenwert'
Keine neuen Beiträge Excel Auswertungen: Kursiv-Filter? Microsoft Excel 2003 6 Gast 915 22. Jul 2009, 12:44
Gast Kursiv-Filter? Microsoft Excel 2003
Keine neuen Beiträge Excel Hilfe: Brauche mal wieder Hilfe, Microsoft Excel Fehler?? 5 micha84 496 08. Jul 2009, 14:22
micha84 Brauche mal wieder Hilfe, Microsoft Excel Fehler??
Keine neuen Beiträge Excel VBA (Makros): Microsoft Makro: LargeFileImport 10 ThomasOW 607 07. Mai 2009, 15:55
ThomasOW Microsoft Makro: LargeFileImport
Keine neuen Beiträge Excel VBA (Makros): Microsoft Chart Control in Offoce 2007 1 uhura 1322 17. Apr 2009, 18:34
Nepumuk Microsoft Chart Control in Offoce 2007
Keine neuen Beiträge Excel VBA (Makros): Microsoft Excel: Formel, Makro oder Skript? 0 georg2608 1205 09. Jun 2008, 00:46
georg2608 Microsoft Excel: Formel, Makro oder Skript?
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Word Serienbriefe