showmodal 的怪问题 |
|
bjwdxs
一般會員 發表:4 回覆:4 積分:1 註冊:2006-07-06 發送簡訊給我 |
我在unit1 create 中 动态创建 登陆界面 LogintDlg TLogintDlg *LogintDlg; 在LogintDlg 中 void __fastcall TLogintDlg::OKBtnClick(TObject *Sender) if(Edit1->Text=="" || Edit2->Text=="") else{ if(ADOQuery1->IsEmpty())
执行的结果 是,用户名不填,弹出MessageBox ("文件名,密码不能为空") 后 LogintDlg 的窗口关闭了, 跟中其代码执行 ,发现 TLogintDlg::OKBtnClick(TObject *Sender) 执行完了,就接着delete LogintDlg; 我百思不解呀 |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
你好,请看注释
我在unit1 create 中 动态创建 登陆界面 LogintDlg TLogintDlg *LogintDlg; 在LogintDlg 中 void __fastcall TLogintDlg::OKBtnClick(TObject *Sender) else{ 不知你想要的结果是如何? 还有,一般来说modal的form里都要return二种值:
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
bjwdxs
一般會員 發表:4 回覆:4 積分:1 註冊:2006-07-06 發送簡訊給我 |
首先要感谢楼上的给的回复。 if(Edit1->Text=="" || Edit2->Text=="") 并不希望登陆窗口也关掉, 但程序执行的情况是,提示窗口关掉之后,登陆窗口也关掉。这是我不希望的。 有一点不明白,ModalResult 是我ShowMessage("文件名,密码不能为空"); 的返回值,还是Form的返回值? |
bjwdxs
一般會員 發表:4 回覆:4 積分:1 註冊:2006-07-06 發送簡訊給我 |
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
Ans: ShowMessage() 及 Application->MessageBox() 關閉時, Windows 都會傳回一個 Enter(或 Esc)值, 故會造成 Form 額外接收到該 Return 值, 而使主 Form 上之 TButton 或 TBitBtn 對該值做反應. 如果不喜歡將 TButton 的 ModalResult 設為 mrNone, 則須自行製作一個 MyMessageBox 的 Component, 並於其 FormClose() 時, 呼叫另一個自製的 Show() Form 攔截掉該 Return 值, 則 PasswordForm 的 TButton->ModualResult 便可免改為 mrNone.
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
你好,
1/ ModalResult 正确讲是属于form上的属性。仅管button上也有那个属性,但事实上也是设定form上的那个属性值。只是button上的那个比较方便,比如说你有二个button,button1设成mrOK,button2设成mrCancel,那么按第一个,button就会帮你把form上的ModalResult 设成mrOK,另一个则相反。 2/ 若你只有一个button,那你就要在那个button的onclick事件上依不同的情形直接设定form上的ModalResult值。比如说密码空了,就在ShowMessage( )的正下面写ModalResult =mrCancel。值得注意的是,这时候的button上的ModalResult就只能设定mrNone。因为你已经决定靠自己来设定form上的值而不是靠button自己主动设值! 希望这样解说你会更明白些! ===================引 用 文 章=================== 首先要感谢楼上的给的回复。 if(Edit1->Text=="" || Edit2->Text=="") 并不希望登陆窗口也关掉, 但程序执行的情况是,提示窗口关掉之后,登陆窗口也关掉。这是我不希望的。 有一点不明白,ModalResult 是我ShowMessage("文件名,密码不能为空"); 的返回值,还是Form的返回值?
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |