zoukankan      html  css  js  c++  java
  • 动态添加treeview树

    unit Unit3;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComCtrls, DB, ADODB, StdCtrls;

    type

       PNodeInfo=^TNodeInfo;
       TNodeInfo=record
         ID:string;
         FullName:string;
         Url:string;
       end;

      TForm3 = class(TForm)
        ADOConnection1: TADOConnection;
        ADOQuery1: TADOQuery;
        TreeView1: TTreeView;
        Button1: TButton;
        procedure CreateChildTree(ParentNode: TTreeNode);
        procedure CreateViewTree(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure TreeView1DblClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form3: TForm3;

    implementation

    {$R *.dfm}

    procedure TForm3.CreateChildTree(ParentNode: TTreeNode);
    var
      Query:TADOQuery;
      ChildNode:TTreeNode; //孩子结点
      ChildNodeInfo:PNodeInfo; //孩子结点信息
    begin
      Query:=TADOQuery.Create(nil);
      with Query do
      begin
        Connection:=ADOConnection1;
        SQL.Add('SELECT ID,FullName,Url FROM PInfo WHERE ParentID = '''+PNodeInfo(ParentNode.Data)^.ID+''''); //获取孩子结点信息
        Open;
        while not Eof do
        begin
          New(ChildNodeInfo);
          ChildNodeInfo^.ID:=FieldByName('ID').AsString;
          ChildNodeInfo^.FullName:=FieldByName('FullName').AsString;
          ChildNodeInfo^.Url:=FieldByName('Url').AsString;
          ChildNode:=TreeView1.Items.AddChildObject(ParentNode,(ChildNodeInfo^.FullName),ChildNodeInfo); //添加孩子结点,并关联孩子结点信息
          CreateChildTree(ChildNode); //进行递归
          Next;
        end;
        Close;
      end;
    end;

    procedure TForm3.CreateViewTree(Sender: TObject);
    var
      BootNode:TTreeNode; //根结点
      BootNodeInfo:PNodeInfo; //根结点信息
    begin
      with ADOQuery1 do
      begin
        SQL.Clear;
        SQL.Add('SELECT ID,FullName,Url FROM PInfo WHERE ParentID IS NULL'); //获取根结点信息
        Open;
     
        New(BootNodeInfo);
        BootNodeInfo^.ID:=FieldByName('ID').AsString;
        BootNodeInfo^.FullName:=FieldByName('FullName').AsString;
        BootNodeInfo^.Url:=FieldByName('Url').AsString;
        TreeView1.Items.Clear;
        BootNode:=TreeView1.Items.AddChildObject(nil,(BootNodeInfo^.FullName),BootNodeInfo); //添加根结点,并关联根结点信息
        Close;
      end;
      CreateChildTree(BootNode); //创建子树
      TreeView1.FullExpand; //展开所有树结点
    end;
    procedure TForm3.Button1Click(Sender: TObject);
    begin
       CreateViewTree(Sender);
    end;

    procedure TForm3.TreeView1DblClick(Sender: TObject);
    var
      TNode:TTreeNode;
      X,Y:Integer;
    begin
      //获取双击的结点
      with TreeView1 do
      begin
        X:=ScreenToClient(Mouse.CursorPos).X;
        Y:=ScreenToClient(Mouse.CursorPos).Y;
        TNode:=GetNodeAt(X,Y);
      end;
      if (TNode<>nil) and (TNode=TreeView1.Selected) then
        ShowMessage(PNodeInfo(TNode.Data)^.Url); //显示双击结点的信息
    end;

    end.

  • 相关阅读:
    WebDriver Api
    Web系统基础
    python自动化测试相关资料
    持续集成Jenkins
    Git和Github库详细使用教程
    TCP/UDP协议
    CentOS连接网络设置
    Web测试基本思路:UI测试、功能测试和兼容性测试
    初识Jenkins
    selenium +python 对table的操作
  • 原文地址:https://www.cnblogs.com/mingdep/p/2217277.html
Copyright © 2011-2022 走看看