哪位仁兄能给个 用VirtualTree 的代码:左边是树型显示,右边是相应节点的信息。
另外,VirtualTree能对数据库进行操作吗?相应的节点名称合信息都是从库中读取的。谢谢

解决方案 »

  1.   

    我没有用过VirtualTree,但是下面是TreeView的相关用法,
    你可以参考一下,呵呵
      

  2.   

    p_Entry_Code = ^TEntrycode;
      TEntrycode = record
        Entry_code : integer;
        division_code : integer;
        parent_division_code : integer;
        name_e : string;
        name_c : string;
      end;procedure TJBJG.Initial_TreeNode(Tree_Node: TTreeNode; Division_Code,entry_code: integer );
    var
      s_ADOQuery :TADOQuery;
      s_TreeNode: TTreeNode;
      s_Record: p_Entry_code;  // s_pub9001_Record ->指向记录类型Tpub9001的指针
      s_SQL_String: string;
    begin
      s_ADOQuery :=TADOQuery.Create(self);
      s_ADOQuery.Connection:= Frmunit.ADOConnectionHYPNL;
      with s_ADOQuery do
      try
        // 下属公司
        s_SQL_String :='select Mis1000.* from Mis1000, Mis0001 '
                      +' where Mis1000.entry_source = Mis0001.entry_source '
                      +'   and Mis0001.parent_source ='+intToStr(entry_code)
                      +' Order by Mis1000.entry_source ';
        Close;
        SQL.Clear;
        SQL.Add(s_SQL_String);
        Open;    While not Eof do
        begin
          New(s_Record);
          s_Record^.Entry_code:= FindField('Entry_source').AsInteger ;
          s_Record^.division_code := 0 ;
          s_Record^.parent_division_code := 0 ;
          s_Record^.name_e:=FindField('name_e').AsString;
          s_Record^.name_c:=FindField('name_c').AsString;      s_TreeNode := TreeView1.Items.AddChildObject(Tree_Node,FindField('name_c').AsString,s_Record);
          s_TreeNode.ImageIndex := 4;  //node 的显示图标
          s_TreeNode.SelectedIndex := 5;  //node 被选中时的图标      Initial_TreeNode(s_TreeNode,0,FindField('Entry_source').AsInteger );      Next;
        end;
                
      finally
        s_ADOQuery.Free;
      end;
    end;procedure TJBJG.show_TreeNode;
    var
      e_TreeNode : TTreeNode;
      e_Record : p_Entry_Code;  // s_pub9001_Record ->指向记录类型Tpub9001的指针
    begin
      with ADOTemp do
      begin
        close;
        sql.Clear;
        sql.Text:='select name_c from mis1000 where entry_source = 0 ';
        open;
        Treeview1.Items[0].Text := Trim(Fields[0].AsString);    close;
        sql.Clear;
        sql.Text:='select Mis1000.* from Mis1000, Mis0001 '
                 +' where Mis1000.entry_source = Mis0001.entry_source '
                 +'   and Mis0001.source_level = 1 ';
        open;
        first;    while not Eof do
        begin
          //员工选择目录
          Treeview1.Items[0].Selected:=true;      New(e_Record);
          e_Record^.Entry_code:= FindField('Entry_source').AsInteger ;
          e_Record^.division_code :=0;
          e_Record^.parent_division_code :=0;
          e_Record^.name_e:=FindField('name_e').AsString;
          e_Record^.name_c:=FindField('name_c').AsString;      e_TreeNode := TreeView1.Items.AddChildObject(TreeView1.Selected,FindField('name_c').AsString, e_Record);
          e_TreeNode.ImageIndex := 4;  //node 的显示图标
          e_TreeNode.SelectedIndex :=5 ;  //node 被选中时的图标      Initial_TreeNode(e_TreeNode, 0,FindField('Entry_source').AsInteger );     
          next;
        end;  end;  Treeview1.FullExpand;  if TreeView1.Items.Count > 1 then
      begin
        Treeview1.Items[1].Selected:=true;
        Treeview1.Items[0].Selected:=true;
      end;
    end;
      

  3.   

    treeview 和listview 我会用的, 可这个三方控件VirtualTree不同啊