这属于treeview的最基本用法呀,查查帮助,没必要让别人解决的

解决方案 »

  1.   

    1-先用selectnode查找给学生节点,付给一个节点变量 a。保留节点参数。
    2-再用selectnode查找所选班级节点,幅个另一个节点变量 b。
    3-AddChildObject函数添加b的字节点,
    4-Delete删除原来的节点。
      

  2.   

    var
    i,j,k:integer;
    cls_node,stu_node,node:TTreeNode;
    s:string;
    begin
      if tv1.selected.Level=1 then
      if not tv1.Selected.HasChildren then
      begin
         node:=tv1.selected;
         s:=node.Text;
         k:=node.ImageIndex;
         tv1.Items.Delete(tv1.selected);
     
        
         i:=class1.ItemIndex;
             
         cls_node:=tv1.Items.GetFirstNode;
         for j:=1 to i do
               begin
               cls_node:= cls_node.GetLastChild;
               cls_node:=cls_node.GetNext;
               end;
         stu_node:=tv1.Items.AddChild(cls_node,s);
         stu_node.ImageIndex:=k;  end;
    end;
      

  3.   

    上个是左边变化,这个是右边变化
    var
    i,j,k:integer;
    cls_node,stu_node,node,node1:TTreeNode;
    s:string;
    flag:boolean;
    begin
      if tv1.selected.Level=1 then
      if not tv1.Selected.HasChildren then
      begin
         node:=tv1.selected;
         s:=node.Text;
         k:=node.ImageIndex;
       
         if  class1.ItemIndex=-1 then
         i:=class2.ItemIndex
         else  begin
               i:=class1.ItemIndex;
               end;
         cls_node:=tv1.Items.GetFirstNode;
         for j:=1 to i do
               begin
               cls_node:= cls_node.GetLastChild;
               cls_node:=cls_node.GetNext;
               end;
         i:=tv2.Items.Count;
         node:=tv2.Items.GetFirstNode;
         begin
         for j:=1 to i do
         begin
           if node.Level=0 then
             begin
              if  node.Text=cls_node.Text then
              begin
                  flag:=true;
              end
              else
                node:=node.GetNext;
             end
              else
              node:=node.GetNext;
          end;
        end;
        end;
         //判断此学生是否已经分完班了
        if flag then
        begin
        node1:=tv2.Items.GetFirstNode;
        i:=tv2.Items.Count;
                for k:=1 to i do
                begin
                  if node1.Text=s then
                  flag:=false
                  else
                  node1:=node1.GetNext ;
                end;    end;
        if flag then
        tv2.Items.AddChild(node,s)
        else
        showmessage('这个学生已经转完班了');
    end;