我已经设置我的登录过程与可用的窗体(Form4)和MainForm。 在可用的形式(form4)我有:应用程序终止没有明显的原因
var
Form4: TForm4;
procedure Login;
implementation
.....
'登录' 程序进入:
procedure Login;
begin
with TForm4.Create(nil) do
try
Application.MainForm.Hide;
if ShowModal = mrOK then
Application.MainForm.Show
else
Application.Terminate;
finally
Free;
end;
end;
然后在同一表单上我有一个按钮来登录:
procedure TForm4.AdvGlowButton1Click(Sender: TObject); //the buton's property is ModalResult=mrOK
begin
DataModule2.LOGIN_QUERY.Active:=false;
DataModule2.LOGIN_QUERY.SQL.Clear;
DataModule2.LOGIN_QUERY.SQL.Add('select user,passsword from users where user='+QuotedStr(cxlookupcombobox1.text)+' and password='+QuotedStr(cxTextEdit1.Text));
DataModule2.LOGIN_QUERY.Open;
if DataModule2.LOGIN_QUERY.FieldByName('password').AsString<>''
then ModalResult := mrOK else
ModalResult := mrNone;
end;
项目来源如下:
begin
Application.Initialize;
Application.MainFormOnTaskbar := False;
Application.CreateForm(TDataModule2, DataModule2);
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TForm7, Form7);
Application.CreateForm(TARCHIVE, ARHCIVE);
Application.CreateForm(TForm10, Form10);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm6, Form6);
Application.CreateForm(TForm5, Form5);
Application.CreateForm(TForm9, Form9);
Application.CreateForm(TForm12, Form12);
Application.CreateForm(TForm12, Form12);
Application.CreateForm(TAboutBox, AboutBox);
Login;
Application.Run;
end.
然而,单击Form4上的“登录”按钮时,应用程序 将无故终止。这是为什么发生? 应该
Application.MainFormOnTaskbar:= False;
也许设置为true?
编辑:
我编辑的工程文件和创建活动的form4:
procedure TForm4.FormCreate(Sender: TObject);
begin
AdvGlowButton1.ModalResult := mrOK;
end;
,改变了项目源:
{$R *.res}
var
MainForm: TMainForm;
begin
Application.Initialize;
Application.CreateForm(TMainForm, MainForm);
Application.MainFormOnTaskbar := False;
Application.CreateForm(TDataModule2, DataModule2);
Application.CreateForm(TForm7, Form7);
Application.CreateForm(TARCHIVE, ARCHIVE);
Application.CreateForm(TForm10, Form10);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm6, Form6);
Application.CreateForm(TForm5, Form5);
Application.CreateForm(TForm9, Form9);
Application.CreateForm(TForm12, Form12);
Application.CreateForm(TForm12, Form12);
Application.CreateForm(TAboutBox, AboutBox);
Login;
Application.Run;
end.
,我不似乎得到应用关闭....(它仍然如此,呃......)
edit2:
试过这样。我在我的AdvGlowButton1设置为ModalResult = mrNone和形式风格fsdialog:
procedure TForm4.AdvGlowButton1Click(Sender: TObject); //the buton's property is ModalResult=mrOK
begin
DataModule2.LOGIN_QUERY.Active:=false;
DataModule2.LOGIN_QUERY.SQL.Clear;
DataModule2.LOGIN_QUERY.SQL.Add('select user,passsword from users where user='+QuotedStr(cxlookupcombobox1.text)+' and password='+QuotedStr(cxTextEdit1.Text));
DataModule2.LOGIN_QUERY.Open;
if DataModule2.LOGIN_QUERY.FieldByName('password').AsString<>''
then ModalResult := mrOK else
dxStatusBar1.Panels[1].Text :='Wrong password !';
end;
这部作品的时代最当我启动应用程序并点击AdvGlowButton1按钮(登录按钮),但它有时会关闭。我想到的另一件事是缺少,你如何提示在这个登录表单上关闭应用程序,因为它只期望模态结果?
我会大胆地猜测的ShowModal不mrOk。 – 2015-02-11 04:55:13
很难看清过去的'Application.Terminate'。我也想知道为什么你不给你的表格名称。以及为什么你在启动时创建它们。我想IDE是为你做的。但这是一个不好的指导。它认为你是一位20世纪末期的VB程序员。 – 2015-02-11 07:23:48
顺便说一句,这是所有修复后,你的下一个任务(在你的应用程序中做任何事情之前)是摆脱数据库中的纯文本密码,并用(SHA1)哈希替换它们。这是互联网/数据库安全规则#1和**你不能马上开始做**。 – 2015-02-11 08:52:36