我在Delphi中使用TreeView,我使用它的OnChange
事件将所选项添加到ComboBox。
但最大的问题是,当您单击TreeView中的选定项时,OnChange
事件不起作用。它仅在我单击未选中的项目时有效。
要解决此问题,我还会使用OnClick
事件。但后来问题变成了两个事件都被解雇了一个未选择的项目:
procedure Test;
begin
ShowMessage('submit');
end;
procedure TForm1.TreeView1Click(Sender: TObject);
begin
Test;
end;
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
Test;
end;
它运行ShowMessage两次。如何检查是否存在先前的事件,或者当前是否正在运行事件?
与jQuery类似的东西:
$ ("#foo") .bind ("Change click", function () {
$ (This) .toggleClass ("entered");
});
答案 0 :(得分:0)
也许是一种太明显的解决方案,但你是否尝试过......只使用OnClick
事件?
但要回答你的问题,如何防止第二个事件被解雇:
典型的解决方案是将先前选择的索引存储在变量中,并检查该变量:
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
Test;
end;
procedure TForm1.TreeView1Click(Sender: TObject);
begin
if TreeView1.Selected.Index = FPrevTreeViewIndex then
Test;
FPrevTreeViewIndex := TreeView1.Selected.Index;
end;