procedure TMain_Form.dxDBTreeView1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
 pt:Tpoint;
 tnode:TTreeNode;
 DBTreeNode:TdxDBTreeNodes;
 nodeid:integer;
 p:Pnodedata;
begin
  GetCursorPos(pt);
  pt:=dxDBTreeView1.ScreenToClient(pt);
  tnode:=TTreeView(dxDBTreeView1).GetNodeAt(pt.X,pt.Y);
  if tnode<>nil then
   begin
    if button=mbleft then
      begin
       nodeid:=DBTreeNode.GetKeyFieldValue(tnode) ;
       //showmessage(inttostr(nodeid));
       new(p)  ;
       p.nodeId:=nodeid;
       if mylist.IndexOf(p)<0 then
       nCur:=mylist.Add(p) ;
       //showmessage(inttostr(nCur));
      end ;
   end;
end;
procedure TMain_Form.ToolButton4Click(Sender: TObject);
var
p:pnodedata;
nodeid:integer;
DbTreeNodes:TdxDBTreeNodes;
DbTreeNode:TdxDBTreeNode;
tnode:TTreeNode;
begin
if nCur>0 then
   nCur:=nCur-1
 else
   nCur:=0;
 p:=mylist.Items[nCur];
 nodeid:=p.nodeId;
//showmessage(inttostr(nodeid)
//showmessage(DbTreeNodes.GetDBTreeNode('1').text);
 DbTreeNode:=DbTreeNodes.GetDBTreeNode(nodeid);//这里出错if DbTreeNode<>nil then
   begin
   DbTreeNode.Selected;
   DbTreeNode.Focused;
   end;
end;其中nodeid是树中keyfileds的值,现存到Tlist的一个变量中