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

V.S*_*les 7 delphi treeview

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

procedure TForm1.TreeView1Click(Sender: TObject);
begin

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

end;
Run Code Online (Sandbox Code Playgroud)

如果用户单击树视图的索引1,此代码将显示一条消息,问题如下:如果用户选择索引1,将显示该消息,但在此之后,用户单击列表视图的空白区域消息仍然执行,因为该项仍然被选中.如何仅在用户单击相应项目时才能运行事件?

Ken*_*ite 8

不要使用OnClick,只要TTreeView单击它就会发生(不仅在单击节点时).而是使用TTreeView.OnChange事件,它传递给您节点:

procedure TForm3.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
  if Assigned(Node) then
    if Node.AbsoluteIndex = 1 then
      ShowMessage('selecionado');
end;
Run Code Online (Sandbox Code Playgroud)

  • 另外,必须要考虑键盘.有些人只使用键盘,没有鼠标. (7认同)