当前位置: 代码迷 >> Delphi >> Treevie当前节点被移动或删除后,怎样才能使焦点留在原来的位置下
  详细解决方案

Treevie当前节点被移动或删除后,怎样才能使焦点留在原来的位置下

热度:2704   发布时间:2013-02-26 00:00:00.0
Treevie当前节点被移动或删除后,怎样才能使焦点留在原来的位置上?
Treevie当前节点被移动或删除后,怎样才能使焦点留在原来的位置上?
aaaa
   |---111
   |---222-→当前节点被移动到最后
   |---333
   |---444
   |---555
   |---666
节点222被移动,333节点获得焦点
aaaa
   |---111
   |---333-→ 变为当前节点
   |---444
   |---555
   |---666
   |---222

------解决方案--------------------------------------------------------
anode := node.GetNext;
node.delete;
anode.Selected; 
------解决方案--------------------------------------------------------
先记录下个获得焦点的Node,删除当前Node后,再设置记录的Node为选中即可
------解决方案--------------------------------------------------------
//SetFocuseNode(当前待删除节点)
procedure SetFocuseNode(curNode : TcxTreeListNode);
begin
  if curNode.GetNext <> nil then
    curNode.GetNext.Selected := true
  else
  if curNode.GetPrev <> nil then
    curNode.GetPrev.Selected := true;

  curNode.Delete;
end;

------解决方案--------------------------------------------------------
类似代码

//移动前
TPoint:=待移动节点的Pos;
//移动后
if Assigned(TreeView.获取NodeByPoint(TPoint)) then
    TreeView.获取NodeByPoint(TPoint).设置焦点.

方法和函数都有的,不记得名字了,意思就这样吧
  相关解决方案