線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1281
推到 Plurk!
推到 Facebook!

Abort語句使用問題

尚未結案
Amanda_Chen
一般會員


發表:25
回覆:82
積分:21
註冊:2003-12-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-23 14:26:49 IP:61.165.xxx.xxx 未訂閱
在一個project中使用ShowModal方法建立一個輸入表單,在表單中錯誤觸發後,用setfocus回到用戶出錯的輸入專案後使用Abort中止。可是程式運行中,Abort執行後程式沒有停留在輸入表單上,而是回到了show它的程式,以前用過這樣的功能,其他的表單都可以正常運行,不知道這一個是怎麼回事呢?請問什麼會對Abort的執行行為發生影響?謝謝 各位大大。
Amanda_Chen
一般會員


發表:25
回覆:82
積分:21
註冊:2003-12-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-23 14:34:26 IP:61.165.xxx.xxx 未訂閱
程序片断如下:
var frm1:TForm1;
begin
 try
   frm1:=TForm1.create(self);
   frm1.ShowModal;
finally
   frm:=nil; ?//frm1中执行abort后直接进入这里了。很不解
   frm.free;
end;
end            
Amanda_Chen
一般會員


發表:25
回覆:82
積分:21
註冊:2003-12-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-23 14:35:26 IP:61.165.xxx.xxx 未訂閱
程序片断如下:
var frm1:TForm1;
begin
 try
   frm1:=TForm1.create(self);
   frm1.ShowModal;
finally
   frm1:=nil; ?//frm1中執行abort後直接進入這裏了。很不解
   frm1.free;
end;
end            
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-23 14:42:12 IP:61.30.xxx.xxx 未訂閱
你好:     程式沒錯呀, Try .. finally 是址不管任何狀況一定要去完成 finally 內的程式。 而 Try except 則是發生 raise 時才會執行 except 內的程式。 < src="http://sourceprovide.deepen.com.tw/K_Top/bp.gif">
Amanda_Chen
一般會員


發表:25
回覆:82
積分:21
註冊:2003-12-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-23 15:52:38 IP:61.165.xxx.xxx 未訂閱
引言: 你好: 程式沒錯呀, Try .. finally 是址不管任何狀況一定要去完成 finally 內的程式。 而 Try except 則是發生 raise 時才會執行 except 內的程式。 < src="http://sourceprovide.deepen.com.tw/K_Top/bp.gif">
我是希望frm1在執行到button1.click事件中的Abort時,停留在frm1不要退出,我並沒有用frm1.close之類的退出語句啊,為什麼它會自己退出呢?奇怪啊!
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-23 16:06:32 IP:61.222.xxx.xxx 未訂閱
您好, 你要在frm1裡,把會錯誤的地方的程式用try-except-end包住才不會讓frm1結束,否則,當frm1.ShowModal時,一出錯,本來就會跳到finally後面的.你可以把你frm1裡的程式碼post上來,也許你可以比較快找到答案
Amanda_Chen
一般會員


發表:25
回覆:82
積分:21
註冊:2003-12-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-23 16:18:47 IP:61.165.xxx.xxx 未訂閱
引言: 您好, 你要在frm1裡,把會錯誤的地方的程式用try-except-end包住才不會讓frm1結束,否則,當frm1.ShowModal時,一出錯,本來就會跳到finally後面的.你可以把你frm1裡的程式碼post上來,也許你可以比較快找到答案
對喲!可是菜單中所有其他frm都是這樣產生的,用的是一模一樣的程式碼,可其他都可以不把Abort當成異常跳出來啊:button.click 如下:
procedure TForm28.BitBtn2Click(Sender: TObject);
begin
 ADOQuery1.SQL.Clear;
 ADOQuery1.SQL.Add('select * from V操作員 where 操作員=''' oper '''') ;
 ADOQuery1.Open;
 if password<>Edit4.Text then begin
   MessageDlg('您的舊密碼輸入不正確,請重新輸入!',mtInformation,[mbOK],0);
   Edit4.SetFocus;
   Abort;
 end;
end;
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-23 16:32:08 IP:61.30.xxx.xxx 未訂閱
    我猜可能是你的程式碼還沒執行 Abort 前已經發生了 Raise 所以就離開
了 Form 回到了 Try .. Finally 去。你有見到 MessageDlg 的訊息視窗
嗎? 如果沒有那就是我說的事情發生了。否則的話就是 "見鬼第四集" 囉    >    < src="http://sourceprovide.deepen.com.tw/K_Top/bp.gif">
        
Amanda_Chen
一般會員


發表:25
回覆:82
積分:21
註冊:2003-12-28

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-04-23 16:41:30 IP:61.165.xxx.xxx 未訂閱
即使沒有走到Abort,既密碼已更新成功,它還是會在更新密碼後一下子跳出來,奇怪!請大大幫我看看啊 procedure TForm28.BitBtn2Click(Sender: TObject); begin ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('select * from V操作員 where 操作員=''' oper '''') ; ADOQuery1.Open; if password<>Edit4.Text then begin MessageDlg('您的舊密碼輸入不正確,請重新輸入!',mtInformation,[mbOK],0); Edit4.SetFocus; Abort; end; if Edit1.Text<>Edit2.Text then begin MessageDlg('您的新密碼兩次輸入不一致,請重新輸入!',mtInformation,[mbOK],0); Edit1.SetFocus; Abort; end; ADOQuery1.Edit; ADOQuery1.FieldValues['口令']:=Edit1.Text; ADOQuery1.Post; MessageDlg('您的密碼已更改成功!',mtInformation,[mbOK],0); End;
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-04-23 17:35:52 IP:61.222.xxx.xxx 未訂閱
在TForm28.BitBtn2Click設中斷點,應該很快就能知道是那一行 raise error 了
Amanda_Chen
一般會員


發表:25
回覆:82
積分:21
註冊:2003-12-28

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-04-23 17:53:06 IP:61.165.xxx.xxx 未訂閱
我抓到那個小鬼了!是BitBtn的modalResult在作怪。它可以自動幫我們關閉modal的表單。設其為mrNone就OK了。很不好意思,把大家引錯方向了。 一個疑惑:這個
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-04-23 18:04:11 IP:61.222.xxx.xxx 未訂閱
引言: 我抓到那個小鬼了!是BitBtn的modalResult在作怪。它可以自動幫我們關閉modal的表單。設其為mrNone就OK了。很不好意思,把大家引錯方向了。 一個疑惑:這個>< face="Verdana, Arial, Helvetica"> 如果bitbtn僅設ModuleResult,但沒有指定他的OnClick程序的話,ModuleResult是不會被觸發的,換言之,Form就不會被設ModuleResult.(我不知道您的bitbtn有沒有寫OnClick程序)
Amanda_Chen
一般會員


發表:25
回覆:82
積分:21
註冊:2003-12-28

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-04-23 20:09:50 IP:61.165.xxx.xxx 未訂閱
引言:
引言: 我抓到那個小鬼了!是BitBtn的modalResult在作怪。它可以自動幫我們關閉modal的表單。設其為mrNone就OK了。很不好意思,把大家引錯方向了。 一個疑惑:這個>< face="Verdana, Arial, Helvetica"> 如果bitbtn僅設ModuleResult,但沒有指定他的OnClick程序的話,ModuleResult是不會被觸發的,換言之,Form就不會被設ModuleResult.(我不知道您的bitbtn有沒有寫OnClick程序)
呵呵,當然有寫,就是前面post上來的關於修改密碼的程式啊。而且觸發事件只有click.
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-04-24 10:24:49 IP:61.222.xxx.xxx 未訂閱
引言:
引言:
引言: 我抓到那個小鬼了!是BitBtn的modalResult在作怪。它可以自動幫我們關閉modal的表單。設其為mrNone就OK了。很不好意思,把大家引錯方向了。 一個疑惑:這個>< face="Verdana, Arial, Helvetica"> 如果bitbtn僅設ModuleResult,但沒有指定他的OnClick程序的話,ModuleResult是不會被觸發的,換言之,Form就不會被設ModuleResult.(我不知道您的bitbtn有沒有寫OnClick程序)
呵呵,當然有寫,就是前面post上來的關於修改密碼的程式啊。而且觸發事件只有click. < face="Verdana, Arial, Helvetica"> 這樣就要以你的程式來查一查才會知道了,不理,依照onLine help的說明,設定 ModuleResult本來就是用來關掉一個form用(限於用ShowModal)用的.而bitbtn等元件,在你按下click時,他會先檢查該元件有的ModuleResult是否有設值(mrNone不算),若有的話,就會把值設給form的ModuleResult了.我所能找到的就這麼多,其他的我想應該還是要看你的程式碼,也許有可能會找到答案.
Amanda_Chen
一般會員


發表:25
回覆:82
積分:21
註冊:2003-12-28

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-04-24 10:48:31 IP:61.165.xxx.xxx 未訂閱
引言:
引言:
引言:
引言: 我抓到那個小鬼了!是BitBtn的modalResult在作怪。它可以自動幫我們關閉modal的表單。設其為mrNone就OK了。很不好意思,把大家引錯方向了。 一個疑惑:這個>< face="Verdana, Arial, Helvetica"> 如果bitbtn僅設ModuleResult,但沒有指定他的OnClick程序的話,ModuleResult是不會被觸發的,換言之,Form就不會被設ModuleResult.(我不知道您的bitbtn有沒有寫OnClick程序)
呵呵,當然有寫,就是前面post上來的關於修改密碼的程式啊。而且觸發事件只有click. < face="Verdana, Arial, Helvetica"> 這樣就要以你的程式來查一查才會知道了,不理,依照onLine help的說明,設定 ModuleResult本來就是用來關掉一個form用(限於用ShowModal)用的.而bitbtn等元件,在你按下click時,他會先檢查該元件有的ModuleResult是否有設值(mrNone不算),若有的話,就會把值設給form的ModuleResult了.我所能找到的就這麼多,其他的我想應該還是要看你的程式碼,也許有可能會找到答案. < face="Verdana, Arial, Helvetica"> 呵呵,我得到的結果跟您一樣。謝謝您的勤力。
系統時間:2024-05-17 15:31:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!