请教高手,  如何用TREEVIEW显示一个数据库中的所有的表,同时每点一个表名则在F1BOOK中显示及修改所选中表,  在点另一个表前进行保存,最好有代码,---分好商量

解决方案 »

  1.   

    试试看:procedure TForm1.FillTreeView(TreeView: TTreeView);
      procedure CreateSubTree(FNodeName: string; Node: TTreeNode = nil);
      var
        mLocalName: string;
        TreeNode: TTreeNode;
        Ads_Tmp: TADODataSet;
      begin
        ADS_Tmp := TADODataSet.Create(Self);
        ADS_Tmp.Connection := ADOConnection1;
        with ADS_Tmp do
        try
          Close;
          CommandText := 'Select * from Type Where ParentID =' + FNodeName;
          Open;
          First;
          while not Eof do
          begin
            mLocalName := FieldbyName('ID').Asstring;
            TreeNode := TreeView.Items.AddChild(Node, FieldByName('Name').AsString);
            CreateSubTree(mLocalName, TreeNode); // 此处循环递归
            Next;
          end;
        finally
          ADS_Tmp.Free;
        end;
      end;
    begin
      TreeView.Items.BeginUpdate;
     TreeView.Items.Clear;
      with TreeView.Items.Add(nil, '所有目录') do
      begin
        ImageIndex := 1;
        SelectedIndex := 1;
      end;
      CreateSubTree('0', TreeView.Items[0]);
      TreeView.Items.EndUpdate;
      TreeView.Items[1].Selected := True;
    end;
      

  2.   

    procedure TMain.CreateTree(QuerySource:TADOQuery;NodeParent:TTreeNode;treeview1:ttreeview);
    var
      pstr1, pstr2 : ^string;
      NodeTemp : TTreeNode;
    begin
      pstr1 := NodeParent.Data;
      with QuerySource do
      begin
        close;
        sql.Clear;
        sql.Text:='SELECT key,xcode,xname FROM xzdm WHERE parent = ' + '''' + pstr1^ + '''';
        open;
        if isempty then exit;
        NodeTemp := nil;
        while not eof do
        begin
          new(pstr2);
          pstr2^ := FieldByName('key').AsString;
          NodeTemp := TreeView1.Items.AddChildObject(NodeParent,
            trim(FieldByName('xname').AsString)+'('+fieldbyname('xcode').AsString+')', pstr2);
          Next;
        end;
      end;
      while NodeTemp <> nil do
      begin
        CreateTree(QuerySource, NodeTemp,treeview1);
        NodeTemp := Nodetemp.getPrevSibling;
      end;
    end;procedure TMain.RootTree(treeview1:ttreeview);
    var 
      NodeTemp : TTreeNode;
      pstr : ^string;
      Query:TADOQuery;  
    begin
      Query:=TADOQuery.Create(self);
      query.Connection:=BgConnection;
      try
        Treeview1.Items.BeginUpdate;
        with query do
        begin
          SQL.Text :='select top 1 *  from xzdm ';
          open;
          if isempty then exit;
          NodeTemp := nil;
          while not eof  do
          begin
            new(pstr);
            pstr^ := FieldByName('key').AsString;
            NodeTemp :=treeview1.Items.AddObject(nil,
              trim(FieldByName('xname').AsString)+'('+fieldbyname('xcode').AsString+')', pstr);
            Next;
          end;
        end;
        while NodeTemp <> nil do
        begin
          CreateTree(Query, NodeTemp,treeview1);
          NodeTemp:=NodeTemp.getPrevSibling;
        end;
        treeview1.Items.EndUpdate;
      finally
        Query.Free;
      end; 
    end;
      

  3.   

    我是新手, 刚从VB转学DELPHI,一些语似能自看懂,但不会调试麻烦您一下:能否把所用控件及主要属性列一下,另外最好给我完整单元的代码!!
    您费心了!!
      

  4.   

    别急,delphiyesgood肯定要给分的,不过我还想知道,谁还有高见??