在treeview的属性中设置
treeview.images:=ImageList1
在treeview的node都是动态加进去的,我希望在最后一级才加入图片,
但是每次运行,treeview把所有节点都加进图片。

解决方案 »

  1.   

    procedure TPublicClass.TreeViewAddT(MFieldStr, DFieldStr,
      TableNameValue: String; Sender: TTreeView; ImageValue: TImageList);
    var
      PNode , CNode : TTreeNode;
      I : Integer;
    begin
      Sender.Items.Clear;
      Sender.Images := ImageValue;
      With DataModuleFrm.Temp1ADOQuery do
      begin
        if Active then
          Active := False;
        SQL.Clear;
        SQL.Add('Select Distinct ' + MFieldStr + ' from ' + TableNameValue);
        Prepared;
        Open;
        First;
        While Not Eof do
        begin
          PNode := Sender.Items.AddChild(Nil,Trim(FieldByName(MFieldStr).AsString));
          PNode.ImageIndex := 0;
          if PNode.Level = 1 then
          begin
            PNode.ImageIndex := 2;
            Pnode.StateIndex := 4;
          end; {}
          Next;
        end;
      end;
      With DataModuleFrm.LSB_ADOQuery do
      begin
        Sender.SetFocus;
        For I := Sender.Items.Count -1 DownTo 0 do
        begin
          PNode := TTreeNode.Create(Nil);
          PNode := Sender.Items[I];
          if Active then
            Active := False;
          SQL.Clear;
          SQL.Add('Select ' + DFieldStr + ' from ' + TableNameValue + ' Where ' +
            MFieldStr + ' = ' + #39 + Sender.Items[I].Text + #39);
          Prepared;
          Open;
          First;
          While Not Eof do
          begin
            CNode := Sender.Items.AddChild(PNode,Trim(FieldByName(DFieldStr).AsString));
            CNode.ImageIndex := 1;
            if PNode.Level = 1 then
            begin
              PNode.ImageIndex := 2;
              Pnode.StateIndex := 4;
            end;{}
            Next;
          end;
        end;
      end;
    end;参数你自己添去。----------------
    沉沦中..........
      

  2.   

    判断它有没有子树,如果有的话imageindex设为-1