Автор: X11
Дата сообщения: 03.03.2012 11:43
Вопрос по TcxDBTreeList
Нужно перемещать выделенный узел со всеми своими дочерними узлами на уровень вверх или вниз.
Есть код, которые это делает, но в базе данных изменения не отображаются.
Код:
procedure TreeMoveUp(cxDBTreeList: TcxDBTreeList);
var
ANode: TcxDBTreeListNode;
AParentNode: TcxTreeListNode;
begin
DM.fibDB.SQLLogger.ActiveLogging := true;
ANode := cxDBTreeList.FocusedNode as TcxDBTreeListNode;
if ANode <> cxDBTreeList.Root then
begin
AParentNode := ANode.Parent;
if AParentNode <> nil then
if AParentNode.Parent <> nil then
ANode.MoveTo(AParentNode.Parent, tlamAddChild)
else
ANode.MoveTo(nil, tlamAdd);
end;
ANode.Focused := true;
cxDBTreeList.SetFocus;
end;
procedure TreeMoveDown(cxDBTreeList: TcxDBTreeList);
var
ANode: TcxDBTreeListNode;
APrevChildNode, ANextChildNode, AParentNode: TcxTreeListNode;
begin
DM.fibDB.SQLLogger.ActiveLogging := true;
ANode := cxDBTreeList.FocusedNode as TcxDBTreeListNode;
if ANode <> cxDBTreeList.Root then
begin
AParentNode := ANode.Parent;
ANextChildNode := AParentNode.GetNextChild(ANode);
APrevChildNode := AParentNode.GetPrevChild(ANode);
if ANextChildNode <> nil then
ANode.MoveTo(ANextChildNode, tlamAddChild)
else
if APrevChildNode <> nil then
ANode.MoveTo(APrevChildNode, tlamAddChild);
end;
ANode.Focused := true;
cxDBTreeList.SetFocus;
end;