我想在双击treeview节点时,执行一些语句,我目前是写在dbclick事件里,然后里面用
if (UrlTreeView.GetNodeAt(mousex,mousey) <> nil) then
  begin
......
  end
但是我发现这样还是不精确,点的不是节点也执行,我只想在双击节点才运行,请问我该怎么写呢,谢谢

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComCtrls, StdCtrls;type
      TForm1 = class(TForm)
        TreeView1: TTreeView;
        procedure FormCreate(Sender: TObject);
        procedure TreeView1DblClick(Sender: TObject);
        procedure TreeView1Click(Sender: TObject);
      private
        { Private declarations }
        Flag: Boolean; //变量
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    var
      i: Integer;
      tn: TTreeNode;
    begin
      //建临时节点
      for i := 0 to 9 do
      begin
        tn := TreeView1.Items.AddChild(nil, 'treenode' + IntToStr(i));
        TreeView1.Items.AddChild(tn, IntToStr(i));
      end;
    end;procedure TForm1.TreeView1Click(Sender: TObject);
    begin
      if TreeView1.Selected.Expanded then //设置标志
        Flag := False
      else
        Flag := True;
    end;procedure TForm1.TreeView1DblClick(Sender: TObject);
    begin
      if (TreeView1.Selected.Expanded and Flag)
        or (not TreeView1.Selected.Expanded) and (not Flag) then //判断是否双击了节点
        showmessage(TreeView1.Selected.Text); //执行你需要的代码
    end;end.你新建个Application试试吧