bonjour a tous, je vien ici demander de l'aide concernant un fonction fort simple: RemoveDirectory.
En effet que j'utilise un TShellTreeView de ksdev ou un TspSkinTreeView de DynamicSkinForm(almdev) ou encore simlplement le TDirectoryListBox des composants Win3.1 fournis avec BCB (j'utilise BDS2006), il semble que bien que selon le code ci-dessous, la fonction marche bien, le dossier reste present( dans l'explorer comme dans les treeview ) bien qu'inaccessible jusqu'a ce que l'application soit fermée, et disparait alors du shell...
// je cré d'abord un repertoire en passant par là
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 void __fastcall TForm1::Button1Click(TObject *Sender) { if( !TeShellTreeView1->Selected ) return; AnsiString name = TeShellTreeView1->Path+"Newfolder..."; if( CreateDirectory( name.c_str(), NULL ) == FALSE ) DIALOG_OK( "Error during directory creation...!"); }
// puis je le selectionne dans le treeview et je souhaite le supprimer en passant par la...
je suis un peu perdu par ce problème ou on dirai que le repertoire ne peu disparaitre completement du shell (que le repertoire est été créé par l'appli ou non d'ailleurs ) seulement une fois que le processus qui l'a supprimer se termine...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 void __fastcall TForm1::Button2Click(TObject *Sender) { TeShellTreeView1->AutoRefresh = false; AnsiString path = TeShellTreeView1->Path; TTreeNode* keep = TeShellTreeView1->Selected; TeShellTreeView1->Selected = TeShellTreeView1->Selected->Parent; TeShellListView1->Root = TeShellTreeView1->Path; SetCurrentDirectory( TeShellTreeView1->Path.c_str() ); TeShellListView1->Items->BeginUpdate(); TeShellTreeView1->Items->BeginUpdate(); if( RemoveDirectory( path.c_str() ) == FALSE ) DIALOG_OK( "Directory contains media(s)..! \nPlease empty before being able to delete it...!"); TeShellTreeView1->Items->Delete( keep ); TeShellTreeView1->Items->EndUpdate(); TeShellListView1->Items->EndUpdate(); TeShellTreeView1->Refresh( TeShellTreeView1->Selected ); TeShellTreeView1->AutoRefresh = true; TeShellTreeView1->Repaint(); }
Merci pour votre attention...
Partager