我现在做一个小东西,做动态创建treeview,但是挂图标却不知该怎样下手
procedure TForm1.Button1Click(Sender: TObject);
var
a,a1,a2:ttreenode;
i,i_l,i_t:integer;
begin
ADOTable1.Open;
      i_l:=-99;i_t:=-99;
  for i:=0 to ADOTable1.RecordCount-1 do
     begin
    ctv1.Images:=ImageList1;
        ctv1:=TTreeView.Create(form1);
        ctv1.Name:='ctv'+IntToStr(ADOTable1.FieldValues['i_id']);
        ctv1.Parent:=Form1;
     a:=ctv1.Items.Add(nil,ADOTable1.FieldValues['c_name']);
        a1:=ctv1.Items.Add(a,IntToStr(ADOTable1.FieldValues['i_int']));
        a2:=ctv1.Items.Add(a1,ADOTable1.FieldValues['c_zt']);
   ctv1.Left:=i_l+80;
        ctv1.top:=i_t+100;
        i_l:=ctv1.Left;
        i_t:=ctv1.top-100;
        ctv1.Width:=80;
        ctv1.Height:=50;
        ctv1.color:=$00C08080;
        ctv1.OnClick:=TreeViewClick;
        ADOTable1.Next;
     end;
 请问该怎么挂图标谢谢大侠们。

解决方案 »

  1.   

    放个TimageList控件里面载入图标。
    显示的时候只要去imagelist里的图标就可以了!
      

  2.   

    a.imageIndex := 0;
    a1.imageIndex := 1;
    a2.imageIndex := 2;
      

  3.   


    a.imageindex:=0;
    a1.imageindex:=1;
    a2.imageindex:=2;
    当然首先的给treeview 关联一个imagelist
    那分来吧
      

  4.   

    这样是挂上了,可是,还有一个问题没问完呢?这个答完了一定给分的呀!
    我是从数据库里提取数据。我把数据库里的一个字段分几种情况每种情况是一个图标
    但是看我写的代码里提出的数据不对呀!!
    procedure TForm1.Button1Click(Sender: TObject);
    var
    a,a1,a2:ttreenode;
    i,i_l,i_t:integer;
    begin
      ADOTable1.Open;
          i_l:=-99;i_t:=-99;
      for i:=0 to ADOTable1.RecordCount-1 do
         begin
            ctv1:=TTreeView.Create(form1);
            ctv1.Name:='ctv'+IntToStr(ADOTable1.FieldValues['i_id']);
            ctv1.Parent:=Form1;
            ctv1.Images:=ImageList1;
            a:=ctv1.Items.Add(nil,ADOTable1.FieldValues['c_name']);
            a1:=ctv1.Items.Add(a,IntToStr(ADOTable1.FieldValues['i_int']));
            a2:=ctv1.Items.Add(a1,ADOTable1.FieldValues['c_zt']);
             if ADOTable1.FieldValues['c_zt']='空闲' then
                 a.ImageIndex:=0;
            if ADOTable1.FieldValues['c_zt']='使用' then
                  a.ImageIndex:=1;
            if ADOTable1.FieldValues['c_zt']='点菜' then
                  a.ImageIndex:=2;
            if ADOTable1.FieldValues['c_zt']='入住' then
                  a.ImageIndex:=3;
            if ADOTable1.FieldValues['c_zt']='预订' then
               a.ImageIndex:=4;
            ctv1.Left:=i_l+80;
            ctv1.top:=i_t+100;
            i_l:=ctv1.Left;
            i_t:=ctv1.top-100;
            ctv1.Width:=80;
            ctv1.Height:=80;
            ctv1.color:=$00C08080;
            ctv1.OnClick:=TreeViewClick;
            ADOTable1.Next;
         end;
    end;
      

  5.   

    ADOTable1.FieldValues['c_zt']='入住' 有没有空格什么的啊
      

  6.   

    但是看我写的代码里提出的数据不对呀!!
    ---------------------------------------
    提出的什么数据不对呀?
    有问题请发信息到我的E-mail:[email protected]
    来信请把问题的网址粘贴上。
      

  7.   

    var
    a,a1,a2:ttreenode;
    i,i_l,i_t:integer;
    ctv1 : TTreeView;
    img : TImageList;
    bmp : TBitmap;
    strArr : Array of String;
    begin
      setLength(strArr,11);
      for i := 0 to 10 do
      begin
        if i mod 2 = 0 then
          strArr[i] := '空闲'
        else if i mod 3 = 0 then
          strArr[i] := '使用'
        else if i mod 5 = 0 then
          strArr[i] := '点菜'
        else if i mod 7 = 0 then
          strArr[i] := '入住'
        else
          StrArr[i] := '预订';
      end;
      i_l:=-99;i_t:=-99;
      for i:= Low(StrArr) to High(StrArr) do
      begin
        ctv1:=TTreeView.Create(form1);
        ctv1.Name:='ctv'+IntToStr(i);
        ctv1.Parent:=Form1;
        a:=ctv1.Items.Add(nil,StrArr[i]);
        a1:=ctv1.Items.Add(a,StrArr[i]+'1');
        a2:=ctv1.Items.Add(a1,StrArr[i]+'2');
         if StrArr[i] ='空闲' then
         begin
            bmp := TBitmap.Create;
            bmp.LoadFromFile('C:\Documents and Settings\www\桌面\11.bmp');
            img := TImageList.Create(Owner);
            img.InsertMasked(0,bmp,clYellow);
            ctv1.Images:= img;
            a.ImageIndex:=0;
            bmp.Free;
         end;
        if StrArr[i]='使用' then
         begin
            bmp := TBitmap.Create;
            bmp.LoadFromFile('C:\Documents and Settings\www\桌面\22.bmp');
            img := TImageList.Create(Owner);
            img.InsertMasked(0,bmp,clYellow);
            ctv1.Images:= img;
            a.ImageIndex:=0;
            bmp.Free;
         end;
        if StrArr[i]='点菜' then
         begin
            bmp := TBitmap.Create;
            bmp.LoadFromFile('C:\Documents and Settings\www\桌面\33.bmp');
            img := TImageList.Create(Owner);
            img.InsertMasked(0,bmp,clYellow);
            ctv1.Images:= img;
            a.ImageIndex:=0;
            bmp.Free;
         end;
        if StrArr[i]='入住' then
        begin
          ctv1.Images := ImageList1;
          a.ImageIndex:=3;
        end;
        if StrArr[i]='预订' then
           a.ImageIndex:=4;
        ctv1.Left:=i_l+80;
        ctv1.top:=i_t+100;
        i_l:=ctv1.Left;
        i_t:=ctv1.top-100;
        ctv1.Width:=80;
        ctv1.Height:=80;
        ctv1.color:=$00C08080;
    //    ctv1.Update;
    //    ctv1.OnClick:=TreeViewClick;
    //    ADOTable1.Next;
     end;
    end;不知道你的问题是不是这个,我随便改了点,因为没有数据库我就用了个数组替代!你把它改回原来的就可以了!