如果在一个窗体中使用dxDBTreeView没有问题,窗体关闭时一切正常。但如果这个设置这个窗体的Parent为一个PageControl(我使用Raize的),那么在这个Page关闭的时候dxDBTreeView连接的数据会全部自动删除!
被这个问题困扰了好久,只能将含dxDBTreeView的窗体直接创建显示,后来总觉得跟程序风格不一致,于是想修改dxDBTreeView的代码,又觉得也不方便,还要费时费力地去调试跟踪。
后来找了个折中的办法,在dxDBTreeView 的OnDeletion事件中:
.......tvClassDeletion(Sender: TObject; Node: TTreeNode);
begin
inherited;
if not FCanDeleteNode then
Abort;
end;
如果直接Abort,则就无法调用dxDBTreeView的节点删除方法了。我使用了一个FCanDeleteNode ,这样在程序想调用节点删除方法的时候就将FCanDeleteNode 置为True就可以了。
不知道有没有人碰到过这种情况 ,有没有别的好方法。