在delphi6中一页面上有两个控件treeview1与imagelist1,treeview1连接数据库中的字段,imagelist1中有两个图标,当选中treeview1中的某一节点时,该节点的图标为imagelist1中的第一个图标,其余节点为第二个图标,以区别它们.不知如何解决.

解决方案 »

  1.   

    先设置TreeView1的Images属性为ImageList1,
    然后在TreeView1的OnChange事件中:
    procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
    var i: Integer;
    begin
      for i := 0 to TreeView1.Items.Count - 1 do
        TreeView1.Items[i].ImageIndex := 1;
      Node.ImageIndex := 0;
    end;
      

  2.   

    将treeview1.images设为imagelist1
    然后在运行时动态设定节点的图标
    即选中的节点的imageindex属性为0,其它设为1
      

  3.   

    當創建TTreeView的Items時設置其StateIndex屬性為ImageList的序
    號則指定了選中時的圖標
    ImageIndex為在未選中時顯示的圖標,如StateIndex為-1則選中時圖標也不會變.
      

  4.   

    //在TreeView的GetImageIndex事件中编写代码:
    procedure TForm1.TreeView1GetImageIndex(Sender: TObject; Node: TTreeNode);
    begin
    if node.Selected then
    node.ImageIndex:=0
    else
    node.ImageIndex:=1;
    end;
      

  5.   

    增加每个结点的时候.
    var Node: TTreeNode;
      Node := TreeView1.Items.AddChild(..,..);
    Node.ImageIndex := 0;
    Node.SelectedIndex := 1;
      

  6.   

    to sysu(死树),我用你的方法试了,第一个页面正常,我有好几个类似的页面,当我用同样的方法在别的页面上试时,系统提示错误."Access violation at address 004A36EE in module 'main.exe'.我不知道是什么原因.
      

  7.   

    应该是不会啊,你改用(Sender as TTreeView).Items.试试,
    不然就用genphone_ru(哎,什么都要学,真累) 的方法,更简单,直接设置ImageIndex和SelectedIndex就行了。
      

  8.   

    sysu(死树),终于找到了,我把Node.ImageIndex := 0;去掉问题解决了.