仅在单击树视图节点时执行事件

时间:2013-05-25 22:42:54

标签: delphi treeview

我,(更多时间),当我点击树视图的项目时尝试执行操作,请参阅:

procedure TForm1.TreeView1Click(Sender: TObject);
begin

  if treeview1.Selected.AbsoluteIndex=1 then
  begin
    showmessage('selecionado');
  end; 

end;

如果用户点击树视图的索引1,此代码会显示一条消息,问题如下:如果用户选择索引1,则会显示该消息,但在此之后,用户单击进入该区域的空白区域listview仍然执行该消息,因为该项目仍处于选中状态。如何仅在用户单击相应项目时才能运行事件?

3 个答案:

答案 0 :(得分:8)

不要使用OnClick,只要单击TTreeView(不仅在单击节点时),就会出现procedure TForm3.TreeView1Change(Sender: TObject; Node: TTreeNode); begin if Assigned(Node) then if Node.AbsoluteIndex = 1 then ShowMessage('selecionado'); end; 。相反,请使用TTreeView.OnChange事件,该事件将您传递给节点:

{{1}}

答案 1 :(得分:1)

procedure TfClerks.tvHqClick(Sender: TObject);
var
  Node: TTreeNode;
begin
  with tvHq.ScreenToClient(Mouse.CursorPos) do
    Node := tvHq.GetNodeAt(X, Y);
  if Node = nil then
    Exit;
  // do something
end;

答案 2 :(得分:0)

procedure TForm1.TreeView1Click(Sender: TObject);
begin
    if Assigned(TreeView1.Selected) then
    begin
        if SameText(TreeView1.Selected.Text, 'show form1') then
            ShowMessage('selecionado')
        else
           if SameText(TreeView1.Selected.Text, 'show form2') then
               ShowMessage('s22');
    end
end;