• 根据数据库结构生成TreeView


    procedure TUIOperate.FillTree(treeview: TTreeView);
    var
      findq: TADOQuery;
      node: TTreeNode;
    
      //这个方法是根据记录的id字段值,查找TreeView上的父节点
      function FindParentNode(id:Integer):TTreeNode;
      var
        i:Integer;
      begin
        Result := nil;
        for i := 0 to treeview.Items.Count - 1 do
        begin
          //比较Node的Data值和记录的id值
          if Integer(treeview.Items[i].Data) = id then
          begin
            Result := treeview.Items[i];
            Break;
          end;
        end;
      end;
    
    begin
      findq := TADOQuery.Create(nil);
      findq.Connection := controler.DataConnect.Connection; //这里的Connection指向你的数据连接
      try
        treeview.Items.BeginUpdate;
        treeview.Items.Clear;
        //选出所有记录,并按parentid排序,这样可以保证先添加顶级节点,在下级记录添加时,总能找到父节点
        findq.SQL.Text := 'SELECT * FROM [Catalog] order by parentid,id';
        findq.Open;
        while not findq.Eof do
        begin
          //如果是最顶级,直接添加到Treeview
          if findq.FieldByName('parentid').AsInteger = -1 then
            //将id值,保存在Node的Data中,以便查找用
            treeview.Items.AddObject(nil,findq.FieldByName('CatalogName').AsString,Pointer(findq.FieldByName('id').AsInteger))
          else
          begin
            //查找上级节点
            node := FindParentNode(findq.FieldByName('parentid').AsInteger);
            if node <> nil then
              treeview.Items.AddChildObject(node,findq.FieldByName('CatalogName').AsString,Pointer(findq.FieldByName('id').AsInteger));
          end;
          findq.Next;
        end;
      finally
        findq.Free;
        treeview.Items.EndUpdate;
      end;
    end;
    View Code
  • 相关阅读:
    3. applicationCache
    9. 水平垂直居中的方法
    2. 贝塞尔曲线bezierCurveTo
    相识python 之小数据池 集合
    相识python --------- 列表 元祖 range 范围
    相识python while循环 代码块 编码初识 运算符
    相识python第二步:变量 注释 str int bool 用户交换 流程控制语句的解释用法
    python学习基础知识
    python的基础知识
    我对python的见解
  • 原文地址:https://www.cnblogs.com/key-ok/p/3428869.html
Copyright © 2020-2023  润新知