procedure TForm1.TreeView1DblClick(Sender: TObject);
var
  pt:Tpoint;
  node:TTreeNode;
begin
  GetCursorPos(pt);
  ScreenToClient(pt);
  node:=TreeView1.GetNodeAt(pt.X,pt.Y);
  if node=nil then exit;
  caption:=node.Text;
end;这样的代码老是获取不到

解决方案 »

  1.   


    procedure TForm1.TreeView1DblClick(Sender: TObject);
    var
      pt:Tpoint;
      node:TTreeNode;
    begin
      GetCursorPos(pt);
      pt := TreeView1.ScreenToClient(pt);
      node:=TreeView1.GetNodeAt(pt.X,pt.Y);
      if node=nil then exit;
      caption:=node.Text;
    end;注意这句 pt := TreeView1.ScreenToClient(pt);
    如果不用TreeView1.ScreenToClient 就相当于self.ScreenToClient(Form1.ScreenToClient),坐标转换就会出错
      

  2.   

      ScreenToClient(pt); //用的是Windows(API),
    //改成不是TreeView1.ScreenToClient(pt)
    //就是TreeView1.ClientToScreen(pt)
    //很搞,我就不研究了。
      

  3.   


    procedure TForm1.TreeView1DblClick(Sender: TObject);
    var
      pt:Tpoint;
      node:TTreeNode;
    begin
      GetCursorPos(pt);
      pt := TreeView1.ScreenToClient(pt);
      node:=TreeView1.GetNodeAt(pt.X,pt.Y);
      if node=nil then exit;
      caption:=node.Text;
    end;node.selected.text 是获取你当前节点的Caption
      

  4.   


    procedure TForm1.TreeView1DblClick(Sender: TObject);
    var
      pt:Tpoint;
      node:TTreeNode;
    begin
      GetCursorPos(pt);
      pt := TreeView1.ScreenToClient(pt);
      node:=TreeView1.GetNodeAt(pt.X,pt.Y);
      if node=nil then exit;
      caption:=node.Text;
    end;
    Node.Selected.text是获取你选中的节点的Caption
      

  5.   

     pt := TreeView1.ScreenToClient(pt);
     node:=TreeView1.GetNodeAt(pt.X,pt.Y);这个我是试过不行,我加了Treeview1的
      

  6.   

    procedure ***.tv***tDblClick(Sender: TObject);
    var
      pt :TPoint;
    begin
      pt := Mouse.CursorPos;
      pt := tv***.ScreenToClient(Mouse.CursorPos);
      if tv***.GetNodeAt(pt.X,pt.Y)<>nil then
      begin
        //双击允许执行节点切换
         tv***Change(Sender,tv***.GetNodeAt(pt.X,pt.Y));
      end;  
    end;我自己用的代码
      

  7.   

    是好用的,我测试过了
    procedure TForm1.TreeView1DblClick(Sender: TObject);
    var
      pt:Tpoint;
      node:TTreeNode;
    begin
      GetCursorPos(pt);
      pt := TreeView1.ScreenToClient(pt);
      node:=TreeView1.GetNodeAt(pt.X,pt.Y);
      if node=nil then exit;
      caption:=node.Text;
    end;
      

  8.   

    procedure TForm1.TreeView1DblClick(Sender: TObject);
    var
      pt:TPoint;
      node:TTreeNode;
    begin
      GetCursorPos(pt);
      TreeView1.ScreenToClient(pt);
      node:=TreeView1.GetNodeAt(pt.X,pt.Y);
      if node=nil then exit;
      caption:=node.Text;
    end;
    我测试就是看不到效果,用TreeView1.Selected是肯定可以达到效果的
      

  9.   


        if not (Sender is TTreeView) then Exit;
        Node:= TTreeView(Sender).Selected;
        //可对合法性判断
        //如
        if Node = nil then exit;