Seite 1 von 1
					
				explorertree- oder Treegadget (NUR bestimmter Pfad) ?
				Verfasst: 10.07.2007 13:01
				von heini
				Hallo,
ich möchte entweder in einem ExplorerTreeGadget oder einem TreeGadget eine Verzeichnisstruktur eines BESTIMMTEN Ordners darstellen. OHNE weitere Anzeige der restlichen Laufwerke bzw. Ordner.
Also im Klartext:
z.B. den Pfad W:\Bilder
Der Baum soll also als OBERSTEN Eintrag den Pfad W:\Bilder darstellen und darunter halt eben die Unterordnerstruktur. (sonst NICHTS - auch keine Dateien !!). Selbstverständlich soll es möglich sein, wenn sich in einem Unterordner weitere Unterordner befinden, diese per klick auf den entsprechenden Node zu anzuzeigen.
Ist dies irgendwie möglich ???
Danke schonmal.....
Marco
			 
			
					
				
				Verfasst: 11.07.2007 12:46
				von CNESM
				Ich hab mir da damals auch schon mal Gedanken darüber machen müssen und hab es dann mittels einem einfachen Treegadget geregelt.
			 
			
					
				
				Verfasst: 11.07.2007 19:57
				von heini
				Hallo CNESM...
könntest Du mir verraten wie Du das gemacht hast ??
Bin Anfänger...   

weiss nicht wie ich das anstellen soll. Habs schon mit einigen Codeteilen aus´m CAV oder hier aus´m Forum probiert, habs leider nicht hinbekommen   
 
Trotzdem schon mal Danke für Deinen Tipp  
 
Marco
 
			 
			
					
				
				Verfasst: 11.07.2007 20:54
				von Kiffi
				heini hat geschrieben:könntest Du mir verraten wie Du das gemacht hast ??
ich bin zwar nicht CNESM, aber vielleicht kann ich auch weiterhelfen. Als 
erstes benötigst Du eine rekursive Procedur, die Dir die Ordnerstruktur 
ausliest. Diese kannst Du dann bequem mit AddGadgetItem() in das 
Treegadget einfügen. Jedes mal, wenn es eine Ordnerebene tiefer geht, 
dann erhöhst Du die Einrücktiefe (Indentation); wenn's wieder hoch geht, 
dann reduzierst Du die Einrücktiefe.
Code: Alles auswählen
Procedure ListFiles(EntryPath.s, Indentation.l)
  ; by Lebostein
  ; modified by Kiffi
  
  EntryPath + ""
  
  UsedDirectory = ExamineDirectory(#PB_Any, EntryPath, "*.*")
  
  While NextDirectoryEntry(UsedDirectory)
    
    EntryType.l = DirectoryEntryType(UsedDirectory)
    EntryName.s = DirectoryEntryName(UsedDirectory)
    
    If EntryName = "." Or EntryName = "..": Continue: EndIf
    
    If EntryType = #PB_DirectoryEntry_Directory
      
      AddGadgetItem(0, -1, EntryPath + EntryName, 0, Indentation)
      
      Indentation + 1
      ListFiles(EntryPath + EntryName, Indentation)
      Indentation - 1 
      
    EndIf
    
  Wend: FinishDirectory(UsedDirectory)
  
EndProcedure
; ----------------------------------------
If OpenWindow(0, #PB_Ignore, #PB_Ignore, 500, 500, "", #PB_Window_SystemMenu | #PB_Window_Invisible)
  If CreateGadgetList(WindowID(0))
    TreeGadget(0, 5, 5, 590, 490)
    ListFiles("c:\programme\purebasic", 0)
    HideWindow(0, #False)
    Repeat
    Until WaitWindowEvent()=#PB_Event_CloseWindow
  EndIf
EndIf
Grüße ... Kiffi
 
			 
			
					
				
				Verfasst: 11.07.2007 21:08
				von heini
				Hallo Kiffi....
VIELEN VIELEN DANK !!!!  
  
  
  
DAS hab ich gesucht !!!!
GENIAL !! Da wäre ich so, NIE drauf gekommen.
DANKE
Marco
 
			 
			
					
				
				Verfasst: 11.07.2007 21:22
				von D@nte
				Nyu 20 min zu spät fertig geworden 
 
Hat halt länger gedauert alles umzumodeln auf alle Verzeichnisse und dann noch das richtige einfügen in das TreeGadget mit den richtigen Nodes 
Benutze einmal WinAPI dafür hat man aber nicht das unschöne StartDir\\Dirs aus Kiffi's Bsp und es werden nur die Ordner angezeigt ohne Pfad
Code: Alles auswählen
Enumeration
  #Window_0
EndEnumeration
Enumeration
  #Tree_0
EndEnumeration
Procedure PfadDurchsuchen(dir$, sublevel)
  ; http://www.purebasic.fr/german/viewtopic.php?p=135511#135511
  dir = ExamineDirectory(#PB_Any, dir$, "*.*")
  PathAddBackslash_(dir$) ; WinAPI32 - ab IE 4
 
  If dir
    While NextDirectoryEntry(dir)
      name.s = DirectoryEntryName(dir)
      If name = "." Or name = ".." : Continue : EndIf
      If DirectoryEntryType(dir) = #PB_DirectoryEntry_Directory
        folder.s = StringField(dir$ + name, CountString(dir$ + name, "\") + 1, "\")
        AddGadgetItem(#Tree_0, -1, folder, 0, sublevel)
        sublevel + 1
        PfadDurchsuchen(dir$+name, sublevel)
        sublevel - 1
      EndIf
    Wend
    FinishDirectory(dir)
  EndIf
EndProcedure
If OpenWindow(#Window_0, 216, 0, 200, 300, "ListDir",  #PB_Window_SystemMenu)
  If CreateGadgetList(WindowID(#Window_0))
    TreeGadget(#Tree_0, 0, 0, 200, 300)
  EndIf
  pfadDurchsuchen(#PB_Compiler_Home, 0)
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
End
 
			 
			
					
				
				Verfasst: 11.07.2007 21:31
				von a14xerus
				Warum aus
Code: Alles auswählen
        sublevel + 1
        PfadDurchsuchen(dir$+name, sublevel)
        sublevel - 1 
nicht
machen??
(war bei D@nte und Kiffi so)
 
			 
			
					
				
				Verfasst: 11.07.2007 21:40
				von heini
				Hallo D@nte....
WOW  
  
  
 
hast Recht... finde ich 
OPTISCH schöner...
hab auch das Gefühl das es 
etwas schneller geht die Verzeichisstruktur einzulesen... wie gesagt, hab das Gefühl, kann mich aber auch täuschen...
NOCHMALS 
VIELEN VIELEN DANK EUCH ALLEN !!!!
Marco