#include "CtrlLib/CtrlLib.h" using namespace Upp; struct App : TopWindow { TreeCtrl tree; typedef App CLASSNAME; void DropInsert(int parent, int ii, PasteClip& d) { tree.AdjustAction(parent, d); if(AcceptInternal(d, "mytreedrag")) { tree.InsertDrop(parent, ii, d); tree.SetFocus(); return; } if(AcceptText(d)) { tree.SetCursor(tree.Insert(parent, ii, Image(), GetString(d))); tree.SetFocus(); return; } } void Drag() { if(tree.DoDragAndDrop(InternalClip(tree, "mytreedrag"), tree.GetDragSample()) == DND_MOVE) tree.Remove(tree.GetCursor()); } App() { Add(tree.SizePos()); Vector parent, parent2; parent.Add(0); tree.SetRoot(Image(), "The Tree"); for(int i = 1; i < 10000; i++) { parent.Add(tree.Add(parent[rand() % parent.GetCount()], i & 1 ? CtrlImg::open() : Image(), FormatIntRoman(i, true))); if((rand() & 3) == 0) tree.Open(parent.Top()); } tree.Open(0); tree.WhenDropInsert = THISBACK(DropInsert); tree.WhenDrag = THISBACK(Drag); tree.MultiSelect(); // tree.Clear(); Sizeable(); } }; GUI_APP_MAIN { App().Run(); }