Oui, en prenant tous les types je pensais éliminer les problèmes.
J'ai fais un exemple (ci-dessous) qui fonctionne "presque" toujours. Mais je me demande si ce n'est pas lié à l'affichage. Si les fichiers ou dossiers sont affichés dans plusieurs explorateurs, le système considère peut-être qu'ils sont en cours d'utilisation et refuse alors de les supprimer. Le bean's, c'est que ça ne le fais pas à tous les coups.
Par contre, magré que j'utilise la même façon de procéder dans mon prog plus complexe, les répertoires refusent obstinément d'être supprimés. ?! Je ne trouve pas les interférences avec les autres fonctions...bref, je blaire un max
Voici le test sur 2 ExplorerListGadget()
Code : Tout sélectionner
Enumeration
#win
#ExplorerFiles
#PopUp
#Menu_File
#Menu_Delete
#Menu_BackUp
#ExplorerBackUp
#PopUpBackUp
#Menu_FileBackUp
#Menu_DeleteBackUp
EndEnumeration
If ExamineDirectory(0, "c:\BackUp_Test", "*.*") = 0
BackUp_directory = CreateDirectory("c:\BackUp_Test")
EndIf
ExamineDesktops()
Largeur$ = Str(DesktopWidth(0))
Hauteur$ = Str(DesktopHeight(0))
If Val(Largeur$)>800 And Val(Hauteur$)>600
FlagWin = #PB_Window_SystemMenu | #PB_Window_ScreenCentered |#PB_Window_TitleBar
Else
FlagWin = #PB_Window_SystemMenu |#PB_Window_TitleBar
EndIf
ww = 790 : wh = 550
Hwnd = OpenWindow(#win,0,0, ww, wh, "Window - Tests", FlagWin)
If Hwnd = 0 Or CreateGadgetList(WindowID(#win))=0
End
EndIf
If CreatePopupMenu(#PopUp)
MenuItem(#Menu_File, "Fichier")
MenuBar()
MenuItem(#Menu_Delete,"Supprimer")
MenuBar()
MenuItem(#Menu_BackUp,"Faire une copie de sauvegarde")
EndIf
If CreatePopupMenu(#PopUpBackUp)
MenuItem(#Menu_FileBackUp, "Fichier")
MenuBar()
MenuItem(#Menu_DeleteBackUp,"Supprimer")
EndIf
Dossier$="c:\"
ExplorerListGadget(#ExplorerFiles,5,5, 780, 250, Dossier$,#PB_Explorer_AlwaysShowSelection)
ChangeListIconGadgetDisplay(#ExplorerFiles, #PB_ListIcon_LargeIcon)
ExplorerListGadget(#ExplorerBackUp,5,260, 780, 250, "c:\BackUp_Test\",#PB_Explorer_AlwaysShowSelection)
ChangeListIconGadgetDisplay(#ExplorerBackUp, #PB_ListIcon_LargeIcon)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #ExplorerFiles
Select EventType()
Case #PB_EventType_RightClick
PositionPopup = GetGadgetState(#ExplorerFiles)
If PositionPopup >= 0
Resultat = GetGadgetItemState(#ExplorerFiles,PositionPopup)
SelectElement$ = GetGadgetText(#ExplorerFiles)+GetGadgetItemText(#ExplorerFiles, PositionPopup, 0)
SetMenuItemText(#PopUp,#Menu_File,"Fichier : "+GetFilePart(SelectElement$))
DisplayPopupMenu(#PopUp,WindowID(#Win))
EndIf
EndSelect
Case #ExplorerBackUp
Select EventType()
Case #PB_EventType_RightClick
PositionPopup = GetGadgetState(#ExplorerBackUp)
If PositionPopup >= 0
Resultat = GetGadgetItemState(#ExplorerBackUp,PositionPopup)
SelectBackUp$ = GetGadgetText(#ExplorerBackUp)+GetGadgetItemText(#ExplorerBackUp, PositionPopup, 0)
SetMenuItemText(#PopUpBackUp,#Menu_FileBackUp,"Fichier : "+GetFilePart(SelectBackUp$))
DisplayPopupMenu(#PopUpBackUp,WindowID(#Win))
EndIf
EndSelect
EndSelect
Case #PB_Event_Menu
Select EventMenu()
;Case #Menu_File
Case #Menu_Delete
PositionPopup = GetGadgetState(#ExplorerFiles)
If PositionPopup >= 0
FileState = GetGadgetItemState(#ExplorerFiles,PositionPopup)
File$ = GetGadgetText(#ExplorerFiles)+GetGadgetItemText(#ExplorerFiles, PositionPopup, 0)
If File$<>""
If FileState & #PB_Explorer_Directory
Suppression = DeleteDirectory(File$,"*.*",#PB_FileSystem_Recursive|#PB_FileSystem_Force)
If Suppression <>0
MessageRequester("OK", "Répertoire supprimé", #MB_ICONINFORMATION)
Else
MessageRequester("ERREUR", "Impossible de supprimer ce répertoire", #MB_ICONEXCLAMATION)
EndIf
EndIf
If FileState & #PB_Explorer_File
Suppression = DeleteFile(File$)
If Suppression <>0
MessageRequester("OK", "Fichier supprimé", #MB_ICONINFORMATION)
Else
MessageRequester("ERREUR", "Impossible de supprimer ce fichier", #MB_ICONEXCLAMATION)
EndIf
EndIf
EndIf
EndIf
Case #Menu_BackUp
PositionPopup = GetGadgetState(#ExplorerFiles)
If PositionPopup > = 0
FileState = GetGadgetItemState(#ExplorerFiles,PositionPopup)
ToBackUp$ = GetGadgetText(#ExplorerFiles)+GetGadgetItemText(#ExplorerFiles, PositionPopup, 0)
If FileState & #PB_Explorer_Directory
BackUp = CopyDirectory(ToBackUp$, "c:\BackUp_Test\"+GetFilePart(ToBackUp$), "*.*" ,#PB_FileSystem_Recursive|#PB_FileSystem_Force)
SetGadgetText(#ExplorerBackUp, "c:\BackUp_Test\")
ElseIf FileState & #PB_Explorer_File
BackUp = CopyFile(ToBackUp$, "c:\BackUp_Test\"+GetFilePart(ToBackUp$))
SetGadgetText(#ExplorerBackUp, "c:\BackUp_Test\")
EndIf
EndIf
Case #Menu_DeleteBackUp
PositionPopup = GetGadgetState(#ExplorerBackUp)
If PositionPopup >= 0
FileState = GetGadgetItemState(#ExplorerBackUp,PositionPopup)
FileBackUp$ = GetGadgetText(#ExplorerBackUp)+GetGadgetItemText(#ExplorerBackUp, PositionPopup, 0)
If FileBackUp$<>""
If FileState & #PB_Explorer_Directory
Suppression = DeleteDirectory(FileBackUp$,"*.*",#PB_FileSystem_Recursive|#PB_FileSystem_Force)
If Suppression <>0
MessageRequester("OK", "Répertoire supprimé", #MB_ICONINFORMATION)
SetGadgetText(#ExplorerBackUp, "c:\BackUp_Test\")
Else
MessageRequester("ERREUR", "Impossible de supprimer ce répertoire", #MB_ICONEXCLAMATION)
EndIf
EndIf
If FileState & #PB_Explorer_File
Suppression = DeleteFile(FileBackUp$)
If Suppression <>0
MessageRequester("OK", "Fichier supprimé", #MB_ICONINFORMATION)
SetGadgetText(#ExplorerBackUp, "c:\BackUp_Test\")
Else
MessageRequester("ERREUR", "Impossible de supprimer ce fichier", #MB_ICONEXCLAMATION)
EndIf
EndIf
EndIf
EndIf
EndSelect
Case #PB_Event_CloseWindow :Quitter = 1
EndSelect
Until Quitter
End
Alors que je n'ai pas rencontré de problème avec un bouton, les menus et popupmenus posent problème. Cela vient peut-être de la récupération du chemin du fichier/dossier dans les menus...
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.