2014-09-22 92 views
0

经过几天的尝试和思考后,我仍然没有接近答案。 我正在寻找一种方法来重新排列Firemonkey TreeView中的TreeViewItems,最好是通过drap-and-drop。在FMX中,VCL不起作用。我希望有人能帮助我走上正轨。 -OK显然有人有点恼火 - 让我改述一下:我找不到一种方法在同一级别重新排序Items,所以TreeViewItems属于一个TreeViewItem-Parent。 可以这样做吗?在FMX TreeView中重新排列TreeViewItems

回答

0

TTreeView中项目的顺序取决于“父项子项”列表中项目的顺序。

您可以修改儿童名单与方法ADDOBJECT,REMOVEOBJECT,InsertObject和排序http://docwiki.embarcadero.com/Libraries/XE7/en/FMX.Types.TFmxObject_Methods

因此,移动你的项目是首次使用:

Item.Parent.InsertObject(0, Item); 
+0

虽然试图代码'Item.Parent .InsertObject(0,Item);'我的TreeView没有任何反应,尽管我不明白为什么。我发现我可以通过'TreeView1.Selected.Index:= TreeView1.Selected.Index - 1'(当索引> 0)并使用'TreeView1.Selected.Index:= TreeView1.Selected.Index + 1'(当索引<计数)时。 在拖放中,似乎不可能拿起物品并将其放在两个兄弟之间。它总是最终成为兄弟姐妹的一个孩子。 – 2014-09-24 12:35:27

+0

正如我所指出的,当我尝试 'TreeView1.Selected.Parent.InsertObject(0,TreeView1.Selected);' ,但是当我使用 'TreeView1.Selected.ParentItem时,没有发生同级内兄弟姐妹的次序.InsertObject(0,TreeView1.Selected);' TreeViewItems兄弟姐妹的顺序被改变,但选定的项目结束在底部 - 尽管0. 我不明白这种行为。我希望你能帮助我理解逻辑。 – 2014-09-24 17:28:27

+0

对不起,金发女郎时刻。尝试'TreeView1.Selected.ParentItem.Items.Insert(0,TreeView1.SelectedItem);'。至于拖放问题,您可能需要使用OnDragXXX事件手动对此行为进行编码。 – 2014-09-24 17:57:44