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