我,(更多时间),当我点击树视图的项目时尝试执行操作,请参阅:
procedure TForm1.TreeView1Click(Sender: TObject);
begin
if treeview1.Selected.AbsoluteIndex=1 then
begin
showmessage('selecionado');
end;
end;
如果用户点击树视图的索引1,此代码会显示一条消息,问题如下:如果用户选择索引1,则会显示该消息,但在此之后,用户单击进入该区域的空白区域listview仍然执行该消息,因为该项目仍处于选中状态。如何仅在用户单击相应项目时才能运行事件?
答案 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;