Delphiの動的ローディングツリービュー情報

ユニット3号機。

インターフェイスは

使用しています
  Windowsの、メッセージ、sysutilsの、バリアント、クラス、グラフィックス、コントロール、フォーム、
  ダイアログ、ComCtrls、DB、ADODB、StdCtrlsを。

入力

   PNodeInfo = ^ TNodeInfoを。
   TNodeInfo = レコード
     ID:文字列; 
     フルネーム:文字列; 
     URL:文字列;
   エンド; 

  TForm3 = クラス(TFormは)
    ADOConnection1:たTADOConnection。
    ADOQuery1:TADOQuery。
    TreeView1:TTreeViewの。
    ボタン1:TButtonの。
    手順CreateChildTree(のparentNode:TTreeNode)。
    手順CreateViewTree(送信者:TObjectを);
    手続きButton1Click(送信者:TObjectを);
    手順TreeView1DblClick(送信者:TObjectを);
  プライベート
    { プライベート宣言} 
  公共
    { 公開宣言} 
  エンド

VAR 
  たForm3:TForm3。

実装

{ $のR * .DFM } 

手順TForm3.CreateChildTree(のparentNode:TTreeNode)。
VaRの
  クエリ:TADOQuery。
  子ノード:TTreeNode; // 孩子结点 
  ChildNodeInfo:PNodeInfo。//孩子结点信息
開始
  :クエリ = TADOQueryを。作成ゼロ)。
  クエリを行う
  始まる
    接続を: = ADOConnection1。
    SQL.Add(' 'のParentID = PINFOからID、フルネーム、URLを選択' ' + PNodeInfo(ParentNode.Data)^ ID +。' '' ')。 // 获取孩子结点信息
    オープン。
    一方で はない EOFが行う
    始まる
      新しい(ChildNodeInfoを)。
      ChildNodeInfo ^ .ID: = FieldByName(' ID ' ).AsString。
      ChildNodeInfo ^ .FullName: = FieldByName(' フルネーム' ).AsString; 
      ChildNodeInfoのた.url ^: = FieldByName(' のURL ' ).AsString; 
      子ノード: = TreeView1.Items.AddChildObject(のparentNode、(^ ChildNodeInfo .FullName)、ChildNodeInfo) ; // 子ノード、子ノード情報やリンクを追加 
      CreateChildTree(子ノードを); //は再帰
      ;次に
     エンド; 
    閉じる; 
  エンド;
 エンド; 

手順TForm3.CreateViewTree(送信者:TObjectを);
 VARの
  BootNode:TTreeNodeを; // ルート
  BootNodeInfo:PNodeInfo。// 根结点信息
始める
   ADOQuery1 
  始まる
    SQL.Clearを。
    SQL.Add(' のParentIDはNULL IS SELECT ID、フルネーム、PINFOからURL '); // 获取根结点信息
    オープン。
 
    新(BootNodeInfo)。
    BootNodeInfo ^ .ID: = FieldByName(' ID ' ).AsString。
    BootNodeInfo ^ .FullName: = FieldByName(' フルネーム' ).AsString。
    BootNodeInfo ^ .URL: = FieldByName(' のURL ' ).AsString。 
    TreeView1.Items.Clear; 
    BootNode: = TreeView1.Items.AddChildObject(ゼロ(^ BootNodeInfo .FullName)、BootNodeInfo); //は、ルート・ノードを追加し、ルートノードとリンク情報
    を閉じる;
   エンド; 
  CreateChildTree(BootNode); // サブツリーの作成 
  TreeView1.FullExpandを; //は、すべてのツリーノードを展開する
エンドを手順TForm3.Button1Click(送信者:TObjectを);
 始める
   CreateViewTree(送信者); 
エンド; 

手順TForm3.TreeView1DblClick(送信者:TObjectを);
 VARの
  TNODE:TTreeNode; 
  X- 、Y:整数; 
始める
  // ダブルジャンクションを取得し
  のTreeView1の実行
  開始
    X-を: = ScreenToClient(Mouse.CursorPos).Xながら、
    Y: = ScreenToClient(Mouse.CursorPos).Yながら、
    TNODE: = GetNodeAt(X、Y)を、
   エンド;
   IF(TNODE <> ゼロ(TNODE = TreeView1.Selected)次いで
    ShowMessage(PNodeInfo(TNode.Data)^。 URL); // 表示ノード情報ダブルクリッ
終了; 

終了

 

おすすめ

転載: www.cnblogs.com/jijm123/p/11408413.html