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

必要欄位檢查,如何在按下「取消」,即可取消?

答題得分者是:tick228
chris681016
中階會員


發表:69
回覆:122
積分:98
註冊:2006-10-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2013-01-18 10:56:40 IP:211.75.xxx.xxx 訂閱
 如下
假如我現在按下「新增」記錄,此時焦點會在sDBEdit1,如果我要馬上「取消」新增記錄,此時會先觸發「sDBEdit1Exit」的事件導無法取消新增。

必要欄位
procedure TfProd_edit.sDBEdit1Exit(Sender: TObject);
begin
if DIFF=0 then EXIT;
if TRIM(sDBEdit1.Text)='' then
begin
MSG_RTN(['編號不可空白!!'],['&O瞭解']);
sDBEdit1.SetFocus;
end;
end;

// 「取消」按鍵
procedure TfProd_edit.sBitBtn11Click(Sender: TObject);
begin
fdm.Prod_cds.Cancel;
DBGrid1.SetFocus;
end;

tick228
高階會員


發表:1
回覆:47
積分:104
註冊:2003-11-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2013-01-18 14:38:00 IP:115.82.xxx.xxx 未訂閱
您好,

你可將這行

if TRIM(sDBEdit1.Text)='' then

改為

if (fdm.Prod_cds.State in [dsInsert, dsEdit]) and (TRIM(sDBEdit1.Text)='') then

試試.

sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2013-01-18 18:06:17 IP:114.35.xxx.xxx 訂閱
檢查程式不要寫在畫面控制項的 OnExit 事件,而是應該寫在 Field 物件的 OnValidate 事件
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
chris681016
中階會員


發表:69
回覆:122
積分:98
註冊:2006-10-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2013-01-21 17:31:19 IP:211.75.xxx.xxx 訂閱
 因為只是一些dbedit 修改,存入,沒用到dbgrid 所以沒用OnValidate,就算用了一樣會檢查無法取消。
我的「取消」按鈕是拉一般的BUTTON ,後來我發覺了,如果用DBNavigator1,的取消就可以取消了~~~~~。
所以我要想辨法繼程那個按鈕為自訂的BUTTON,因該就可以了,不過沒什麼繼程經驗努力中~~。
tick228
高階會員


發表:1
回覆:47
積分:104
註冊:2003-11-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2013-01-21 20:28:04 IP:115.82.xxx.xxx 未訂閱
你可試試用無 Focus 功能的 TSpeedButton 看看
(TDBNavigator 就是使用 TSpeedButton)
系統時間:2024-11-21 20:11:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!