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

MDI的密碼登錄框怎麽做

答題得分者是:Justmade
yezi_ji
一般會員


發表:16
回覆:31
積分:9
註冊:2003-03-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-25 13:36:11 IP:218.14.xxx.xxx 未訂閱
各位大哥及前輩,小弟有一問題請教:我做了一個MDI主界面,又作了一個密碼登錄框,現在我要先顯示密碼登錄框,再顯示主界面,但是在顯示密碼登錄框時,主界面不能出現?感激不盡,謝謝!
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-25 13:51:31 IP:218.16.xxx.xxx 未訂閱
在主介面 FormShow 事件將密碼登錄框 ShowModel , 若登錄成功不做甚麼,否則就 Application.Terminate 就可以在 主介面顯示之前要求使用者登錄,成功就如常顯示主介面,失敗則退出程式。
yezi_ji
一般會員


發表:16
回覆:31
積分:9
註冊:2003-03-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-25 14:25:08 IP:218.14.xxx.xxx 未訂閱
非常感謝,但是小弟在主界面的onshow事件中添加登錄框的showmodal時,運行後,報地址讀取錯誤錯誤,請前輩再次解決,感激不盡。
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-25 14:37:55 IP:218.16.xxx.xxx 未訂閱
那你應還沒  create 那個 登錄框 罷。
with TPasswordDialog.create(self) do
try
  showmodel;
  //決定是否成功登入等等
finally
  free; // 釋放 PasswordDialog
end;
要將 PasswordDialog 換成你的登錄框名字。
yezi_ji
一般會員


發表:16
回覆:31
積分:9
註冊:2003-03-22

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-25 14:51:37 IP:218.14.xxx.xxx 未訂閱
但是爲什麽按了登錄框確定按鈕之後,同樣會報錯。感激不盡。
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-25 15:16:53 IP:218.16.xxx.xxx 未訂閱
可能因為你用了 PasswordDialog.xxxx 。 我這個方法是用 with ... do, 並沒有建立 PasswordDialog 變數,所以只要你刪了 所有 PasswordDialog. 字眼就可以了。若還有問題請 post code 上來容易一點說因為都不知你的 Form 及元件叫甚麼名字....
yezi_ji
一般會員


發表:16
回覆:31
積分:9
註冊:2003-03-22

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-25 15:40:17 IP:218.14.xxx.xxx 未訂閱
procedure TfmMain.FormShow(Sender: TObject); begin with TLogin.Create(Self) do begin try ShowModal; if ModalResult<>mrok then Application.Terminate; finally Free; end; end; end; 還是一樣的問題。我在Login(登錄框的名字)里做了這樣的語句: if password.text='pass' then ModalResult:=mrok; 這在做返回值到主窗口的Onshow事件里確定主程序是不是繼續運行。
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-03-25 15:51:26 IP:218.16.xxx.xxx 未訂閱
procedure TfmMain.FormShow(Sender: TObject);
begin
 with TLogin.Create(Self) do
 begin
 try
   if ShowModal <> mrok then
    Application.Terminate;
 finally
    Free;
 end;
end;
我剛測試過沒問題,若密碼輸入不正碼那 ModelResult 會是甚樣呢? 還有,報錯是甚麼錯呢?
yezi_ji
一般會員


發表:16
回覆:31
積分:9
註冊:2003-03-22

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-03-25 16:21:43 IP:218.14.xxx.xxx 未訂閱
以下是錯誤提示: Project manager.exe raised exception class EAccessViolation with message 'Access violation at address 0045CECE in module 'manager.exe'. Read of address 000002F4'. Process stopped. Use Step or Run to continue. 我沒有做登錄錯誤的返回值,即:密碼錯誤,關閉或取消的返回值。我是直接用Application.Terminate來結束程序的。
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-03-25 16:36:55 IP:218.16.xxx.xxx 未訂閱
你試試在 TLogin 設定 若密碼不正確就設定 ModalResult 為 mrCancel 罷 如
if password.text='pass' then
  ModalResult:=mrok
else
  ModalResult := mrCancel;
這樣會由 fmMain 來處理繼續還是關閉
yezi_ji
一般會員


發表:16
回覆:31
積分:9
註冊:2003-03-22

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-03-25 16:49:13 IP:218.14.xxx.xxx 未訂閱
好的,非常感謝你。
agogorz
初階會員


發表:9
回覆:34
積分:28
註冊:2005-04-09

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-09-08 13:46:52 IP:218.166.xxx.xxx 未訂閱
感謝這位解題的大大,遍尋一天的問題終於找到答案(access violation)
系統時間:2024-07-06 7:04:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!