Tri d'un TreeGadget()
Publié : sam. 06/oct./2007 17:17
Est-ce que quelqu'un aurait une procédure pour trier les élément d'un TreeGadget() comme dans l'explorateur de WinDaube, c'est à dire les dossiers en haut, et les fichiers en dessous?
J'ai essayé de voir avec le SDK de Microsoft, mais j'arrive à rien.
J'ai essayé de voir avec le SDK de Microsoft, mais j'arrive à rien.

Code : Tout sélectionner
#ImgFile = 1
#ImgFold = 2
Global Tree_0
Fnt=LoadFont(0, "system",11)
hIcone = 16 : wIcone = 32
;{- Images du TreeGadget
If CreateImage(#ImgFile, wIcone, hIcone)
StartDrawing(ImageOutput(#ImgFile))
DrawingFont(Fnt)
Box(0, 0, wIcone, hIcone, $FFFFFF)
DrawText(3,0,"File", $0000FF)
StopDrawing()
EndIf
If CreateImage(#ImgFold, wIcone, hIcone)
StartDrawing(ImageOutput(#ImgFold))
DrawingFont(Fnt)
Box(0, 0, wIcone, hIcone, $FFFFFF)
DrawText(3,0,"Fold", $FF0000)
StopDrawing()
EndIf
;}-
;-Procédures
Procedure ListeFichiers(NumDir.l, NameDir.s, Ext.s)
File.s : NameDir = Trim(NameDir)
; Vérification de la chaine
If Right(NameDir,1) = "." : NameDir = Left(NameDir, Len(NameDir)-1) : EndIf
If Right(NameDir,1)<> "\" : NameDir+"\":EndIf
; Vérification de l'extension
If Right(Ext, 1) = "*" Or Ext = ""
NoExt = #True
Else
If FindString(Ext, ".", 1)
Ext = GetExtensionPart(Ext) : NoExt = #False
Else
Ext = Ext : NoExt = #False
EndIf
EndIf
If ExamineDirectory(NumDir, NameDir, "*.*")
While NextDirectoryEntry(NumDir)
File = DirectoryEntryName(NumDir)
Select DirectoryEntryType(NumDir)
Case #PB_DirectoryEntry_File
Select NoExt
Case #True
; ********** Avec extension *********
AddGadgetItem(Tree_0, -1, File, ImageID(#ImgFile), NumDir)
; ***********************************
Case #False
;*********** Sans Extension *********
If GetExtensionPart(File) = Ext
AddGadgetItem(Tree_0, -1, File, ImageID(#ImgFile), NumDir)
EndIf
; ***********************************
EndSelect
Case #PB_DirectoryEntry_Directory
If DirectoryEntryName(NumDir) <> "." And DirectoryEntryName(NumDir) <> ".."
; ***********************************
AddGadgetItem(Tree_0, -1, DirectoryEntryName(NumDir), ImageID(#ImgFold), NumDir)
; ***********************************
ListeFichiers(NumDir +1, NameDir + File, Ext)
EndIf
EndSelect
Wend
FinishDirectory(NumDir)
EndIf
EndProcedure
If OpenWindow(0, 5, 5, 400, 543, "Tree", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateGadgetList(WindowID(0))
Tree_0 = TreeGadget(#PB_Any, 5, 5, 390, 535)
EndIf
EndIf
Chem$ = "D:\PureBasic4\"
ListeFichiers(0, Chem$, "*.*")
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
End