这是我的一个窗体文件,是新建用户,修改用户,和删除用户。为什么我第一次调用该窗口不会出错,第二次就出错了
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.
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.
Form2:=TForm2.Create(Application);
改成form2.hide;
调用时用form2.show;
begin
action:=cafree;
end;