全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:651
推到 Plurk!
推到 Facebook!

登入介面

尚未結案
smallmi
一般會員


發表:18
回覆:18
積分:7
註冊:2012-09-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2018-11-19 14:42:32 IP:220.130.xxx.xxx 未訂閱
目前做一個使用者登入畫面, 我現有兩個Form,一個loginForm,一個是MainForm,打開程式,會先出現loginForm,要求使用者輸入密碼,正確後才會出現MainForm,出現MainForm之後,loginForm關閉,目前以下做法:
在MainForm
FormShow的地方寫
[code delphi]
frmLogin.ShowModal;
[/code]

在loginForm登入的Button的地方寫
[code delphi]
procedure TfrmLogin.BOKClick(Sender: TObject);
begin
Q1.SQL.Clear;
Q1.SQL.Add('SELECT * FROM USID WHERE USER_ID=''' Edtid.TEXT ''' AND USER_PSW=''' Edtpass.TEXT '''');
Q1.Open;
If Q1.IsEmpty Then begin
ShowMessage('帳號或密碼錯誤,請重新輸入');
Q1.Close;
Exit;
End
else begin
frmLogin.Close;
form8.Show;
End;
end;
[/code]
目前遇到的問提是,輸入正確之後,loginFrom直接關閉也沒有出現MainFrom,請各位指導,請問哪裡有誤,謝謝.


P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2018-11-19 20:59:04 IP:118.169.xxx.xxx 未訂閱
第一種方式
你可以反向思考, mainform 不是 mainform, loginform 才是mainform
也就是把 loginform當成mainform, 如果通過密碼才打開所謂的 "mainform", 然後順勢把 loginform hide起來就好了, 相信這種做法應該是你可以理解的

第二種方式
通常 mainform 在 O n Create 的情況下是不建議做一些互動模式的設計, 要等form開完再來做, 我們都會利用 form 的 onidle 特性來達成

在 privatye 中加入一個proceure
private
....
procedure StartRun(Sender: Tobject; var Done: boolean);
....

implementation

procedure TMainForm.FormCreate(Sender: TObject);
begin
...
Application.OnIdle := StartRun;
end;

procedure TMainform.StartRun(Sender: Tobject; var Done: boolean);
var xhandle: longInt;
begin
xhandle:= FindWindow('TMainform',nil);
if xhandle = 0 then exit;
Application.ProcessMessages;
Application.OnIdle:= nil;
Done:= True;

開啟你的 loginform,
如果認證失敗就直接把 Mainform.Close掉(可下 Application.Terminate) , 通過的話, 就繼續往下跑
end;
smallmi
一般會員


發表:18
回覆:18
積分:7
註冊:2012-09-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2018-11-20 09:32:27 IP:220.130.xxx.xxx 未訂閱
回覆版大...因為我MainForm使用fsMDIForm,如果把LoginForm改成MainForm..
登入的時候...點選MENU ITEM,出現cannot create form. no mdi forms are currently active錯誤.
請問這還有什麼方式可以處理?謝謝
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2018-11-21 00:50:26 IP:1.200.xxx.xxx 未訂閱
我很少用 mdiform 方式, 你可以用第二種方式來呼叫 loginform,
foxelf
初階會員


發表:9
回覆:42
積分:30
註冊:2003-03-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2018-12-17 16:18:42 IP:118.160.xxx.xxx 未訂閱
LoginForm Close之後會執行Form8.Show ?
你可以先把LoginForm隱藏起來然後再呼叫MainForm

===================引 用 smallmi 文 章===================
目前做一個使用者登入畫面, 我現有兩個Form,一個loginForm,一個是MainForm,打開程式,會先出現loginForm,要求使用者輸入密碼,正確後才會出現MainForm,出現MainForm之後,loginForm關閉,目前以下做法:
在MainForm
FormShow的地方寫
[code delphi]
frmLogin.ShowModal;
[/code]

在loginForm登入的Button的地方寫
[code delphi]
procedure TfrmLogin.BOKClick(Sender: TObject);
begin
Q1.SQL.Clear;
Q1.SQL.Add('SELECT * FROM USID WHERE USER_ID=''' Edtid.TEXT ''' AND USER_PSW=''' Edtpass.TEXT '''');
Q1.Open;
If Q1.IsEmpty Then begin
ShowMessage('帳號或密碼錯誤,請重新輸入');
Q1.Close;
Exit;
End
else begin
frmLogin.Close;
form8.Show;
End;
end;
[/code]
目前遇到的問提是,輸入正確之後,loginFrom直接關閉也沒有出現MainFrom,請各位指導,請問哪裡有誤,謝謝.


系統時間:2024-05-07 8:59:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!