unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, DBCtrls, Mask, DB, ADODB, Grids, DBGrids,
  ComCtrls, newdBTV, fcdbtreeview;type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    ADOConnection1: TADOConnection;
    DBGrid1: TDBGrid;
    DBNavigator1: TDBNavigator;
    DBMemo1: TDBMemo;
    DBImage1: TDBImage;
    DataSource1: TDataSource;
    DataSource2: TDataSource;
    ADOTable1: TADOTable;
    ADOTable2: TADOTable;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBLookupComboBox1: TDBLookupComboBox;
    DBComboBox1: TDBComboBox;
    DBRadioGroup1: TDBRadioGroup;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    StatusBar1: TStatusBar;
    tv: TTreeView;
    procedure Button8Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure DataSource1DataChange(Sender: TObject; Field: TField);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure tvChange(Sender: TObject; Node: TTreeNode);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button8Click(Sender: TObject);
begin
close;
end;procedure TForm1.FormCreate(Sender: TObject);
var
 mynode:ttreenode;
 {:tbook;}
begin
ADOtable1.Active:=true;
adotable2.active:=true;
repeat
mynode:=tv.Items.Add(tv.selected,adotable1.fieldbyname('xh').asstring);
tv.items.addchild(mynode,adotable1.fieldbyname('xm').asstring);
adotable1.GetBook;
 adotable1.Next;
until adotable1.eof;
end;procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
 {if adotable1.State=dsinsert then
 statusbar1.panels[0].Text:='数据表处于插入状态';
if adotable1.State=dsedit then
  statusbar1.panels[0].Text:='数据表处于编辑状态';
if adotable1.State=dsbrowse then
  statusbar1.panels[0].Text:='数据表处于浏览状态';
if adotable1.State=dssetkey then
  statusbar1.panels[0].Text:='数据表处于查询状态';}
end;procedure TForm1.Button1Click(Sender: TObject);
begin
if adotable1.CanModify then
begin
adotable1.append;
button1.enabled:=false;
button2.enabled:=false;
button3.enabled:=false;
button4.enabled:=false;
button5.enabled:=false;
button8.enabled:=false;
end
else
showmessage('当前数据表不能加入任何信息!');end;procedure TForm1.Button2Click(Sender: TObject);
begin
if messagedlg('确实要删除当前记录吗?',mtinformation,[mbok,mbcancel],0)=mrok then
adotable1.Delete;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
 if adotable1.CanModify then
begin
adotable1.edit;
button1.enabled:=false;
button2.enabled:=false;
button3.enabled:=false;
button4.enabled:=false;
button5.enabled:=false;
button8.enabled:=false;
end
else
showmessage('当前数据不能修改');
end;procedure TForm1.Button4Click(Sender: TObject);
 var
  i,code:integer;
  scope:string;
begin
 repeat
 scope:=inputbox('移动指针位置','请属于移动距离:','0');
 val(scope,i,code);
 if code<>0 then
 showmessage('你输入了一个错误的移动范围,请重新输入!');
 until code=0 ;
 adotable1.MoveBy(i);
end;procedure TForm1.Button5Click(Sender: TObject);
var
loctstr:string;
begin
loctstr:=inputbox('按学号查询','请输入学号:','0');
if not adotable1.locate('xh',loctstr,[locaseinsensitive])then
showmessage('无匹配记录!');end;procedure TForm1.Button6Click(Sender: TObject);
begin
if adotable1.Modified then
begin
adotable1.post;
dbnavigator1.Enabled:=true;
button1.enabled:=true;
button2.enabled:=true;
button3.enabled:=true;
button4.enabled:=true;
button5.enabled:=true;
button8.enabled:=true;
end;
end;procedure TForm1.Button7Click(Sender: TObject);
begin
adotable1.cancel;
dbnavigator1.Enabled:=true;
button1.enabled:=true;
button2.enabled:=true;
button3.enabled:=true;
button4.enabled:=true;
button5.enabled:=true;
button8.enabled:=true;
end;procedure TForm1.tvChange(Sender: TObject; Node: TTreeNode);
begin
 adotable1.GotoBook(tv.Selected.data);
end;end.