程式流程求教,離開dbgriid之殘留keypress處理. |
缺席
|
a123473119
一般會員 發表:19 回覆:46 積分:18 註冊:2002-08-08 發送簡訊給我 |
各位先進好,又來麻煩大家了. 流程理想:
由使用者在grid 最後一行第一欄打入空白後按Enter 鍵,或在第一欄(空值)
直接按Enter鍵後,由程式判斷,將一 Tedit setfocus (用於輸入如總訂單價,
或其它資料), 如果使用者在 Tedit 上直接按 Enter, 即表示輸入完畢,
作一個 btnSure.click 之動作. 結果: 如在第一欄打入空白後按Enter 鍵,流程很正確,可讓 deEdit1 得到
focus
但如果第一欄(本為空值)直接按Enter鍵後, 會讓 FormKeyPress 處理
Enter, 造成 btnSure.Click 提早執行, 無法讓 deEdit1 得到 focus
(原因是 grid enter -> deEdit1 setfocus( ACtiveControl 已是Tedit)
--> FormKeypress 處理 enter ,所以會 btnSure.click)
請教各位前輩, 如何bypass grid1 殘留之 enter 鍵.
不讓其影響後序動作?
(其實我也不太了解, 是 formkeypress(Enter)先作,還是deEdit1 確實有先focus了,再處理 grid 留下的 enter 鍵,但皆會造成 btnSure.click 執行) 程式碼如下: procedure Tform1.FormKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if (key= #13) then
begin
if (ACtiveControl is Tedit) // deEdit1 按 enter 鍵
then begin // 但從 grid 出來,activecontrol 已
// 是 Tedit
if ( MessageDlg('是否確定要新增?',mtConfirmation,mbYes,mbNo],0,)=mrYes)
then begin
btnSure.click; // <----- 確定處理
key:=#0;
end
else key:=#0;
end;
end;
end;
procedure Tform1.DBGrid1ColExit(Sender: TObject);
begin
if (DBGRID1.SelectedField=TblFirstField) and (Tbl.state in EditModes then
begin
if (length(TblFirstField.asstring)=0 ) or (TblFirstField.value=' ') then
begin // grid 輸入完畢控制處
deEdit1.setfocus; // <---- 到 deEdit1 輸入最後資料
end;
end;
end;
|
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
|
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
|
a123473119
一般會員 發表:19 回覆:46 積分:18 註冊:2002-08-08 發送簡訊給我 |
感謝二位前輩,其實以前我作頭檔身檔時,習慣在dbgrid結束後,再讓使用者鍵入
如總價,稅額等..,以前也是在dbgrid結束前,下一個 deTeditx.sefocus, 當時就
奇怪會自動 focus 到下一個 Tedit control,由於不會解,就只能 focus 到 目
標 deTeditx 的上一個,後讓其自動跳下(Tedit tab=enter).
今天才知道是 dbgrid殘留之enter key,剛好有人問到 keybuffer 之問題
試這在 deTeditx.setfocus 前, 下一 EmptykeyQueue ,就解決了.
真感謝大家.
能再請問: 1.能在 form 之 onActivate 內,close 此form 嗎,
還是一定要把某些判斷寫在form show之前
2. raise Exception.create('....') 中之確定鈕
用滑數點,跟按Enter有何不同
我在 dbgrid 之OnColExit 內判斷鍵入資料是否正確
若不正確就raise Exception.create('....')
若用滑數點確定鈕,就可回到原錯誤欄內
但若直接
|
a123473119
一般會員 發表:19 回覆:46 積分:18 註冊:2002-08-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |