table1 中 id1   names1
          01    用品类
          02    酒水类
          03    烟类table2 中 id2   names2
          0101  袜子
          0201  北京啤酒
          0301  黄山treeview1其实id2中前两位为id1,我在窗体创建的时候把记录取到treeview1中,0101属于id1 01,0201数据id2。等等。
给我代码,通过给分。很简单的问题。只是以前没做过treeview,试了好几次没能满意,请各位帮忙。         

解决方案 »

  1.   

    我想在窗体创建的时候把记录取到treeview1中
      

  2.   

    笨办法:
    var
     myNode:TTreeNode;
     ChildNode:TTreeNode;
     myId:integer;
    begin
     while not Table1.eof do
     begin
      myNode:=Treeview1.Items.Add(nil,Table1.FieldByName('names1').AsString);  //生成一个主节点
      myId:=Table1.FieldByName('id1').AsInteger;
      Table2.Active:=false;  //对table2进行过滤
      Table2.Filter:=('id2>='+IntToStr(myId*100)+' and id2<'+IntToStr(myId*100+100));
      Table2.Filtered:=true;
      Table2.Active:=true;
      while not Table2.eof do
       begin
        ChildNode:=Treeview1.Items.AddChild(myNode,Table2.FieldByName('names2').AsString);
        table2.next;
       end; //生成所有该主节点下所有符合条件的子节点
      Table1.next;  //准备进入下一个循环,生成下一个主节点和其子节点
     end; //end of while table1
    end;
      

  3.   

    catnode:=treeview1.items.add(nil,'所有商品');
      with adoquery1 do
        begin
          close;
          sql.clear;
          sql.add('select longid,text from tree..testtree order by longid');
          open;
          first;
          while not adoquery1.eof do
            begin
              cat1node:=treeview1.Items.AddChild(catnode,adoquery1.fieldbyname('text').value+'('+adoquery1.fieldbyname('longid').value+')');
              //treeview1.Items.Item[0].Expanded:=true;
              with adoquery3 do
                begin
                  close;
                  sql.Clear;
                  sql.Add('select * from node,testtree where left(node.names,2)=:aa order by names');
                  adoquery3.Parameters.ParamByName('aa').value:=adoquery1.fieldbyname('longid').value;
                  open;
                  first;
                  while not adoquery3.Eof do
                    begin
                      treeview1.Items.AddChild(cat1node,'('+adoquery3.fieldbyname('names').value+')'+adoquery3.fieldbyname('ide').value);
                      next;
                      //treeview1.Items.Item[1].Expanded:=true;
                    end;
                end;
              next;
            end;
         end;
      

  4.   

    看不出程序有什么问题
    我的疑问是left(),这必须是数据库的函数,你确定它的作用是取左字符串左边两个字符吗?