举个例子,问题简化一下:
有一个树形结构和一个edit1框:
--公司1            
--公司2           
--公司3 
很容易在treeview的change事件中可以实现点击不同节点时在edit1中显示不同的节点名,比如点击‘公司1’在edit1中显示‘公司1’,同样,点击‘公司2’在edit1中显示‘公司2’。现在关键是:??我想实现 :在‘公司1’选中时,在edit1中修改‘公司1’为其他值时,树形结构中的‘公司1’也动态改变。当然‘公司2’选中时也可以在edit1中编辑‘公司2‘。如果用edit1的change事件,当treeview切换节点时也会触发edit1的change事件,就引起了程序的混乱。请问该怎么处理呢?

解决方案 »

  1.   

    TreeView的Change事件是响应节点的切换,修改节点的值并不会触发TreeView的Change事件吧?
      

  2.   

    测试了一下,实际上这样并不会引起冲突:
    procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
    begin
      Edit1.Text := Node.Text;
    end;procedure TForm1.Edit1Change(Sender: TObject);
    begin
      TreeView1.Selected.Text := Edit1.Text;
    end;切换节点时是先触发TreeView1Change然后才触发Edit1Change,就相当于在Edit1Change重新把相同的值写了一遍到Node里面去而已
      

  3.   

    对,我是想用edit1的change事件。
    但是用treeview的click或者change事件在edit1中显示对应数据时,都会引发edit1的change事件,使得数据混乱了,怎么办呢?
      

  4.   

    ChangeNode -> TreeView1Change -> Edit1.Text := Node.Text; -> Edit1's text is changed -> Edit1Change -> TreeView1.Selected.Text := Edit1.Text;一点都不混乱啊,你设断点或者单不调试一下就很清晰了
      

  5.   

    我知道了,也理解了,我调试过呀,可能是因为我用的edit框太多了,因为我每个节点都要对应很多信息,多谢了。