IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

RemoveDirectory et TreeView


Sujet :

C++Builder

  1. #1
    Membre habitu�
    Inscrit en
    Avril 2004
    Messages
    11
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 11
    Par d�faut RemoveDirectory et TreeView
    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...
    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();
    }
    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...
    Merci pour votre attention...

  2. #2
    Membre �clair� Avatar de jehrikhan
    Inscrit en
    Mars 2008
    Messages
    90
    D�tails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Par d�faut
    Il semblerait que ce soit a cause du
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    SetCurrentDirectory( TeShellTreeView1->Path.c_str() );
    Tu ne peut pas supprimer le r�pertoire s�lectionn� comme r�pertoire courant, pour le simple fait qu'il este ouvert. Il faudrait simplement changer le r�pertoire courant avant de chercher a le supprimer

  3. #3
    Membre habitu�
    Inscrit en
    Avril 2004
    Messages
    11
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 11
    Par d�faut
    en fait le setcurrentdirectory correspond au repertoire parent d'apres les deux lignes precedent cet appel de fonction... mais que cette ligne y soit ou non ne change rien au probl�me...

  4. #4
    Membre �clair� Avatar de jehrikhan
    Inscrit en
    Mars 2008
    Messages
    90
    D�tails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Par d�faut
    Hmmm ha oui pardon, j'm�tais emmel� les yeux.

    Mais a part si le fichier est ouvert je vois mal pourquoi il ne veut pas le supprimer.
    As-tu essay� de mettre un point d'arret sur le RemoveDirectory, et de supprimer le r�pertoire � la main quand tu arrives a ce point?

  5. #5
    Membre habitu�
    Inscrit en
    Avril 2004
    Messages
    11
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 11
    Par d�faut
    alors j'ai essay� ce que tu m'a dis et le repertoire se supprime bien a la main par contre d�s que je relance le soft, le RemoveDirectory echou (normal), et le treeview se vide et ne s'actualise plus...

Discussions similaires

  1. TreeView et menu contextuel...
    Par agh dans le forum Composants VCL
    R�ponses: 6
    Dernier message: 06/04/2009, 12h23
  2. TreeView -> ajouter un child � un noeud donn�
    Par fake dans le forum Composants VCL
    R�ponses: 6
    Dernier message: 26/03/2003, 17h14
  3. R�ponses: 5
    Dernier message: 09/01/2003, 11h55
  4. o� y a t il un tutorial pour le Treeview ??
    Par silvermoon dans le forum C++Builder
    R�ponses: 4
    Dernier message: 09/12/2002, 13h30
  5. [Pointer]Treeview.Data
    Par rbag dans le forum Composants VCL
    R�ponses: 7
    Dernier message: 31/08/2002, 01h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo