如题: 我创建了一个 imageList 作的TTreeView 的 stateImage,初始加入结点时设置各个结点的状态图标 StateIndex,结点的状态图标可以正常显示,但对结点拖动之后,结点的StateIndex虽然没有改变,但对应的图标却看不见了,调用TTreeView.update 等刷新函数之后还是看不到.

解决方案 »

  1.   

    是不是 TTreeView的一个bug呢
      

  2.   

    拖动的时候有没有对它的stateindex再赋一次值呢?
      

  3.   

    To: mastersky(浪)
      谢谢,重新赋值后问题就解决了.这是我增加的处理代码,把拖动的结点及其子孙结点的stateindex重赋一次.procedure TForm1.ResetStateImage(TreeNodeParent: TTreeNode);
    var
      Current: Integer;
    begin
      //1表示不可见,2表示可见
      if TreeNodeParent.StateIndex = 1 then
        TreeNodeParent.StateIndex := 2
      else
        TreeNodeParent.StateIndex := 1;
      if TreeNodeParent.StateIndex = 1 then
        TreeNodeParent.StateIndex := 2
      else
        TreeNodeParent.StateIndex := 1;  if TreeNodeParent.HasChildren then
      begin
        TreeNodeParent:=TreeNodeParent.getFirstChild;
        ResetStateImage(TreeNodeParent);
        TreeNodeParent:=TreeNodeParent.Parent;
      end;
      if TreeNodeParent.getNextSibling<>nil then
      begin
        TreeNodeParent:=TreeNodeParent.getNextSibling;
        ResetStateImage(TreeNodeParent);
      end
      else
        exit;
    end;