这是我的一个窗体文件,是新建用户,修改用户,和删除用户。为什么我第一次调用该窗口不会出错,第二次就出错了
unit userset;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, DsFancyButton,Registry;type
  TForm2 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    DsFancyButton1: TDsFancyButton;
    DsFancyButton2: TDsFancyButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    TabSheet2: TTabSheet;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    DsFancyButton3: TDsFancyButton;
    DsFancyButton4: TDsFancyButton;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    TabSheet3: TTabSheet;
    Label8: TLabel;
    edit8: TComboBox;
    DsFancyButton5: TDsFancyButton;
    DsFancyButton6: TDsFancyButton;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DsFancyButton1Click(Sender: TObject);
    procedure DsFancyButton2Click(Sender: TObject);
    procedure DsFancyButton3Click(Sender: TObject);
    procedure DsFancyButton4Click(Sender: TObject);
    procedure DsFancyButton5Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure DsFancyButton6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form2: TForm2;implementation
uses DM;{$R *.dfm}procedure TForm2.DsFancyButton1Click(Sender: TObject);
var
  Reg:TRegistry;
begin
  if Edit1.Text='' then
  begin
    MessageDlg('请输入用户名',mtinformation,[mbok],0);
    Edit1.SetFocus;
    Exit;
  end;  if Edit2.Text<>Edit3.Text then
  begin
    MessageDlg('密码不一致,请重新输入',mtwarning,[mbok],0);
    Edit2.Text:='';
    Edit3.Text:='';
    Edit2.SetFocus;
    Exit;
  end;  with Dm1 do
  begin
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('Select * from Users');
    ADOquery1.Open;
    ADOQuery1.Append;
    ADOQuery1.FieldByName('UserName').AsString:=Edit1.Text;
    ADOQuery1.FieldByName('Password').AsString:=Edit2.Text;
    ADOQuery1.FieldByName('RegTime').AsDateTime:=now;
    ADOQuery1.Post;
    ADOQuery1.Close;
 Reg:=TRegistry.Create;
    Reg.RootKey:=HKEY_CURRENT_USER;
    if Reg.OpenKey('\Software\shijuan',true) then
    begin
      Reg.WriteString('No1','No');
      Reg.WriteString('NowUser',Edit1.Text);
      edit1.Text:='';
      edit2.Text:='';
      edit3.Text:='';
    end;
    close;
  end;
end;procedure TForm2.DsFancyButton2Click(Sender: TObject);
begin
close;
end;
procedure Tform2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  action:=cafree;
end;
procedure TForm2.DsFancyButton3Click(Sender: TObject);
begin
 if Edit4.Text='' then
  begin
    showmessage('请输入用户名');
    Edit4.SetFocus;
    Exit;
  end;  if Edit6.Text<>Edit7.Text then
  begin
    showmessage('密码不一致');
    Edit6.Text:='';
    Edit7.Text:='';
    Edit6.SetFocus;
    exit;
  end;  with DM1 do
  begin
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('select * from Users where UserName='''+Edit4.Text+'''');
    ADOQuery1.Open;    if Edit5.Text<>ADOquery1.FieldByName('password').AsString then
    begin
      MessageDLg('密码不正确',mtError,[mbOk],0);
      Edit5.Text:='';
      Edit6.Text:='';
      Edit7.Text:='';
      Edit5.SetFocus;
      Exit;
    end
    else
    begin
      ADOQuery1.Edit;
      ADOQuery1.FieldValues['password']:=Edit6.Text;
      ADOQuery1.Post;
      ADOQuery1.Close;
      Close;
    end;
    messagedlg('密码修改成功',mtinformation,[mbok],0);
  end;
end;procedure TForm2.DsFancyButton4Click(Sender: TObject);
begin
close;
end;procedure TForm2.DsFancyButton5Click(Sender: TObject);
var
  names:string;
  begin
  names:=edit8.Text;
  DM1.ADOQuery1.Close;
  DM1.ADOQuery1.SQL.Clear;
  DM1.ADOQuery1.SQL.Add('Select * from Users where UserName = '''+Names+'''');
  DM1.ADOQuery1.Open;
  DM1.ADOQuery1.Delete;
      showmessage('删除成功');
  edit8.text:='';
  form2.close;
end;procedure TForm2.FormShow(Sender: TObject);
begin
 with DM1 do
  begin
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('select userName from Users');
    ADOQuery1.Open;
    ADOQuery1.First;    Edit8.Items.Clear;
    while not ADOQuery1.Eof do
    begin
      Edit8.Items.Add(ADOQuery1.FieldValues['UserName']);
      ADOQuery1.Next;
    end;
  end;
end;procedure TForm2.DsFancyButton6Click(Sender: TObject);
begin
close;
end;end.