Seite 1 von 1

Directory alphabetisch sortiert einlesen

Verfasst: 26.01.2005 22:55
von blbltheworm
Hallo zusammen,
ich bin gerade dabei meine eigende Installationsroutine zu programmieren, jedoch stehe ich for einem (eigentlich recht simplen) Problem.
Zum erzeugen Einer Verknüpfung ins Startmenü lese ich den gesamten Ordner Startmenü\Programme mit allen Unterordnern in einen Treeview ein.
Das klappt auch ohne weiteres, jedoch stehen die Ordner nacher unsortiert im Treeview.
Wie kann ich es anstellen, dass sie in sortierter Reihenfolge angezeigt werden??
Hier mal mein bisheriger Code:

Code: Alles auswählen

Procedure CreateSubFol(FolName.s)
DirIndex.l
DirIndex=ExamineDirectory(#PB_Any,FolName,"*.*")
  Repeat 
    FileType=NextDirectoryEntry()
    If FileType=2
      If DirectoryEntryName()<>"." And DirectoryEntryName()<>".."
        AddGadgetItem(#treeStartMen,-1,DirectoryEntryName(),picSIcon)
        OpenTreeGadgetNode(#treeStartMen)
          CreateSubFol(FolName+"\"+DirectoryEntryName())
          UseDirectory(DirIndex)
        CloseTreeGadgetNode(#treeStartMen)
      EndIf
    EndIf
  Until FileType=0
EndProcedure

StartFol.s=GetStartmenuProgramsPath()
      StartDir.l=ExamineDirectory(#PB_Any,StartFol,"*.*")
      
      Repeat 
        FileType=NextDirectoryEntry()
        If FileType=2
          If DirectoryEntryName()<>"." And DirectoryEntryName()<>".."
            AddGadgetItem(#treeStartMen,-1,DirectoryEntryName(),picSIcon)
            OpenTreeGadgetNode(#treeStartMen)
            CreateSubFol(StartFol+"\"+ DirectoryEntryName())
              UseDirectory(StartDir)
            CloseTreeGadgetNode(#treeStartMen)
          EndIf
        EndIf
      Until FileType=0

Verfasst: 26.01.2005 23:48
von Laurin
Es wäre nett, noch die fehlende Konstante #treeStartMen und die Prozedur GetStartmenuProgramsPath() zu posten.

Dein Code, so wie er ist, funktioniert gar nicht.


Ich mach mich trotzdem mal ran.

Verfasst: 26.01.2005 23:54
von blbltheworm
Uups, tschuldigung.
#treeStartMen ist der Treeview, indem das Startmenü ausgegeben wird

Code: Alles auswählen

TreeGadget(#treeStartMen, 135, 110, 320, 160)
GetStartmenuProgramsPath() ist eine Funktion der Setup-UserLib und gibt lediglich den Pfad auf der Festplatte zu Startmenü\Programme zurück (z.B. "C:\Dokumente und Einstellungen\All Users\Startmenü\Programme").

Verfasst: 27.01.2005 00:34
von Laurin
Das ist doch viel einfacher, oder?

Code: Alles auswählen

Enumeration
  #Window_0
  #ExplorerList_0
EndEnumeration

If OpenWindow(#Window_0, 216, 0, 600, 300,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "New window ( 0 )")
  If CreateGadgetList(WindowID())
    ExplorerListGadget(#ExplorerList_0, 30, 40, 160, 190, "K:\Dokumente und Einstellungen\All Users\Startmenü\Programme\")
    RemoveGadgetItem(#ExplorerList_0,0)
  EndIf
EndIf

Repeat
  Event = WaitWindowEvent()
  If Event = #PB_EventGadget
    GadgetID = EventGadgetID()
    If GadgetID = #ExplorerList_0
      MessageRequester("Ah-ah!","Klick mich nicht!",0)
    EndIf
  EndIf
Until Event = #PB_EventCloseWindow

End
Sicher musst du den Code noch etwas umbauen, aber so ist es doch simpler.

Keep it short, simple and powerful!

Verfasst: 27.01.2005 20:21
von blbltheworm
Einfacher ja,
aber nicht das was ich will.
1.Ich will einen Baum
2.Ich will nicht die vier Spalten
Deshalb hab ich nicht diese Möglichkeit gewählt, sondern mir das mit dem TreeView gebaut.

Kann mir jetzt eigentlich wer weiterhelfen??