我已經設置我的登錄過程與可用的窗體(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