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 :

Drag and drop dans un TTreeView [Sources]


Sujet :

C++Builder

  1. #1
    Membre averti Avatar de BigBenQ
    Inscrit en
    Juillet 2005
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 363
    Points : 402
    Points
    402
    Par défaut Drag and drop dans un TTreeView
    Voilou ma question : comment on fait un drag and drop dans un TreeView ?

    En gros, mon treeview réprésente des fichiers, et je voudrais les déplacer, voir les mettre les uns dans les autres.


    Merki d'avance pour toute aide
    L'informatique, c'est fantastique...

  2. #2
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 886
    Points : 1 526
    Points
    1 526
    Par défaut
    Il y a plein d'exemples dans l'aide :

    OnDragOver, OnDragDrop, exemple


    Ce code provient d'une application qui contient une boîte liste et trois libellés, chacun avec une couleur et fonte différentes. La propriété DragMode de chacun de ces libellés est dmAutomatic. L'utilisateur peut sélectionner un libellé et le glisser vers une boîte liste. Lorsque le libellé est déplacé, les éléments de la boîte liste ont la fonte et la couleur de ce dernier.
    Ce gestionnaire d'événement OnDragOver permet à la boîte liste d'accepter un libellé déplacé :

    void __fastcall TForm1::ListBox1DragOver(TObject *Sender, TObject *Source, int X, int Y, TDragState State, bool &Accept)

    {
    Accept = Source->ClassNameIs("TLabel");

    }

    Ce gestionnaire d'événement OnDragDrop implémente le comportement d'un objet "déplacé".

    void __fastcall TForm1::ListBox1DragDrop(TObject *Sender, TObject *Source, int X, int Y)

    {
    if (Sender->ClassNameIs("TListBox") && Source->ClassNameIs("TLabel"))
    {
    TListBox *DestList = (TListBox *)Sender;
    DestList->Font = ((TLabel *)Source)->Font;
    DestList->Color = ((TLabel *)Source)->Color;
    }
    }
    Ici, c'est avec une ListBox, mais le principe reste le même avec un TreeView.

  3. #3
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Salut,
    Voila un bout de code bricolé pour un test similaire avec deux treeview, ils contiennent tout deux deux racines 'A' et 'B' (par ex) avec la possibilité de déplacer un enfant du treeview1 en A, dans la racine B du treeview2 en ayant un message demandant la validation a l'utilisateur.
    Rien d'exceptionnel donc, en espérant que cela te serve...
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
     
    void __fastcall TForm2::TreeDestDragDrop(TObject *Sender, TObject *Source,
          int X, int Y)
    {
    if (Source->ClassNameIs("TTreeView"))
    {
            TTreeView *pView = dynamic_cast < TTreeView * > (Source);
            TTreeNode *pNode = pView->Selected->Parent;
            TTreeNode *pNodeDest = Form2->TreeDest->DropTarget;
            TTreeNode *pNodeExport = pView->Selected;
            pNodeExport->ImageIndex = 1;
            if (pNode->Text.operator ==(pNodeDest->Text))
            {
                    Form2->TreeDest->Items->AddChild(pNodeDest, pView->Selected->Text);
                    pNodeExport->ImageIndex = 2;
                    pNode = pView->Selected;
                    delete (pNode);
            }
            else
            {
            if (MessageDlg(AnsiString("Voulez vous changer de catégorie : ") + pView->Selected->Text + (" cat : ") + pNode->Text + (" en cat : ") + pNodeDest->Text + (" ?"), mtConfirmation, TMsgDlgButtons()<<mbYes<<mbNo, 0) == mrYes)
            {
                    int i = pNode->Text.Length();
                    pView->Selected->Text.Delete(1, i);
                    pView->Selected->Text.Insert(pNodeDest->Text, 1);
                    Form2->TreeDest->Items->AddChild(pNodeDest, pView->Selected->Text);
                    pNodeExport->ImageIndex = 2;
                    pNode = pView->Selected;
                    delete (pNode);
            }
            }
    }
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm2::TreeDestDragOver(TObject *Sender, TObject *Source,
          int X, int Y, TDragState State, bool &Accept)
    {
    Accept = Source->ClassNameIs("TTreeView");
    }
    //---------------------------------------------------------------------------
    @ +

    NB : ces évènements sont ceux du 'treeview2', celui qui reçoit les items en qqsorte.
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  4. #4
    Membre averti Avatar de BigBenQ
    Inscrit en
    Juillet 2005
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 363
    Points : 402
    Points
    402
    Par défaut
    Super Cantrelle ! ca va bien m'aider !

    Merci quand même 10_GOTO_10, mais les listbox et treeview ca marche po pareil pour le drag and drop.

    L'informatique, c'est fantastique...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Drag And Drop dans une Grid
    Par amandinerenard dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 13/05/2013, 17h41
  2. Drag And Drop dans menu contextuel
    Par Yogy dans le forum Windows Forms
    Réponses: 14
    Dernier message: 07/04/2008, 09h44
  3. Drag and drop dans un input
    Par kriekbellevue dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/12/2006, 20h55
  4. [VB.net] Drag and drop dans une Treeview
    Par gégécap dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/10/2006, 10h05
  5. [VB.NET]Drag and Drop dans une Listview
    Par gégécap dans le forum Windows Forms
    Réponses: 5
    Dernier message: 23/08/2006, 18h41

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