一个关于TreeView的问题?????
var row,rownum,col,colnum:integer;
    getstr:array of string;
begin
rownum=4;
colnum=16;
setlength(getstr,colnum);
for row:= 0 to rownum-1 do
begin
  for col:= 0 to colnum-1 do
  begin
    //代码略,每row循环一次得出getstr数组的结果
  end;
  //现在要将getstr的每一元素当一个支点,在这里添加代码以实现利用TreeView建成树,怎样实现代码
end;
end;
//即循环3次获得getstr
 第一次循环:
    getstr={aa,bb,cc,dd}
 第一次循环:
    getstr={aa,bb,ff,dd}
 第一次循环:
    getstr={bb,cc,dd}
现在根据getstr数组3次的数据生成树结构:
aa
 |_bb
    |_cc
    |  |_dd
    |_ff
       |_dd
bb
  |_cc
     |_dd//请问怎样做好呢?

解决方案 »

  1.   

    从叶子开始,第一次得到叶子dd,然后依次得到它的父节点,进栈。直到到根节点后开始初战,不就得到你想要的数据了吗?
    Tnode.HasChildren可以用来判断是不是叶子节点。
      

  2.   

    那具体怎么做啊?
    我写了一个但有问题,帮手解决一下:
               for i:= 0 to colk-1 do
               begin
                   if recstr[i]<>' ' then
                   begin
                     treelist[rowk][i]:=recstr[i];
                     //Node1:=TreeView1.Items.GetFirstNode;
                     if (rowk<=1) or ((recstr[i]<>treelist[rowk-1][i])) then
                     begin
                       case i of
                         4:
                           begin
                             Node:=nil;
                             Node:=TreeView1.Items.AddChild(Node,recstr[i]);
                           end;
                         6,8,10,12:
                           begin
                             Node:=TreeView1.Items.AddChild(Node,recstr[i]);
                           end;
                         else
                           Continue;
                       end;
                     end else
                     begin
                       case i of
                         6,8,10,12:
                           Node:=TreeView1.Items.AddChild(Node,recstr[i]);
                         else
                           Continue;
                       end;
                     end;
                   end;
                 end;
    大家帮手解决一下,或者写一个更好的
      

  3.   

    http://www.csdn.net/develop/Read_Article.asp?Id=18824