我想开左右两个窗口,左小右大,左边以树状显示一个数据库中所有的表,每当点击左窗口中的一个表名,右边窗口则显示表中所有内容,且允许象EXCEL那样方便的编辑?怎么实现??最好有代码??
多谢!!

解决方案 »

  1.   

    完整代码:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ADODB, DB, DBTables, ComCtrls, Grids, DBGrids;type
      TForm1 = class(TForm)
        Query1: TQuery;
        DBGrid1: TDBGrid;
        TreeView1: TTreeView;
        DataSource1: TDataSource;
        procedure FormShow(Sender: TObject);
        procedure TreeView1DblClick(Sender: TObject);
        procedure TreeView1Click(Sender: TObject);
      private
        { Private declarations }
        procedure InitTree;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.InitTree;
    var
      strsDBName:Tstrings;
      I:Integer;
    begin
      strsDBName := TStringList.Create;
      try
        strsDBName.Clear;
        session.GetAliasNames(strsDBName);
        TreeView1.Items.Clear;
        for i := 0 to strsDBName.Count - 1 do
        begin
          TreeView1.Items.AddChild(nil,strsDBName[i]);
        end;
      finally
        strsDBName.Free;
      end;
    end;procedure TForm1.FormShow(Sender: TObject);
    begin
      InitTree;
    end;procedure TForm1.TreeView1DblClick(Sender: TObject);
    var
      strsTableName:TStrings;
      strDBname:string;
      TNodeTemp:TTreeNode;
      I : integer;
    begin
      //展开树;
      if TreeView1.Items.Count = 0 then exit;  TNodeTemp := TreeView1.Selected;
      strDBname := TreeView1.Selected.Text;
      strsTableName := TStringList.Create;
      try
        strsTableName.Clear;
        Session.GetTableNames(strDBname,'',true,true,strsTableName);
        for i := 0 to strsTableName.Count - 1 do
          TreeView1.Items.AddChild(TNodeTemp,strsTableName[i]);
        TNodeTemp.Expand(true);
        finally
        strsTableName.Free;
      end;
    end;procedure TForm1.TreeView1Click(Sender: TObject);
    begin
      //得道数据
      if TreeView1.Selected.Level = 1 then
      begin
        Query1.Close;
        Query1.SQL.Clear;
        Query1.DatabaseName := TreeView1.Selected.Parent.Text;
        Query1.SQL.Add('select * from ' + TreeView1.Selected.Text);
        Query1.Open;
      end;
    end;end.