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
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...
Il y a plein d'exemples dans l'aide :
Ici, c'est avec une ListBox, mais le principe reste le même avec un TreeView.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;
}
}
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.
Current StatusAux persévérants aucune route n'est interdite.
Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
Faîtes quelque chose de bien avec vos petits sous: Enfants du MekongAvec 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...
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...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager