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

請問OnKeyPress的問題

答題得分者是:deity
irvinehing
初階會員


發表:77
回覆:79
積分:31
註冊:2003-11-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-04 15:36:53 IP:202.174.xxx.xxx 未訂閱
請問各位大大,小弟想要使用者按下ENTER鍵後,自動跳到下一個Tab鍵的元件去。 小弟搜尋了站上的資料,發現只要用下列程式碼就可以了。
if(Key == 13)
{
        Perform(WM_NEXTDLGCTL, 0, 0);
}
但是小弟發現只要有用到ComboBox元件就會有問題。 當使用者在ComboBox上按下ENTER後,會多跳一個元件上去,而不是到下一個元件。 小弟看過Tab Order,發現Tab順序是正確的。 請問該怎麼解決?
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-04 17:32:34 IP:218.15.xxx.xxx 未訂閱
irvinehing您好:小弟试了是可以的 1、将form1.KeyPreview设为True; 2、确定Tab Order是否连续; 3、 
 
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
 if Key=#13 then begin
  key:=#0;
  Perform(WM_NEXTDLGCTL, 0, 0);
  end;
end;
这样是行的;
4、或参考: http://delphi.ktop.com.tw/topic.php?topic_id=57783 ~~~静心养德~~~
irvinehing
初階會員


發表:77
回覆:79
積分:31
註冊:2003-11-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-05 14:54:15 IP:202.174.xxx.xxx 未訂閱
小弟的Tab Order順序是Edit1,Edit2,Combox1,Edit3,Button1,Button2。 Form1.KeyPreview已經設定為true了。 但是還是會出現多跳一個的現象。 小弟設定斷點在if(Key==13),用Shift F7一步一步執行,發現Combox1會執行兩次FormKeyPress。所以會出現跳多一個的現象。 Combox1的Style設定為csDropDown就醫竊正常,但是只要設定為csDropDownList就會出現多跳一個的現象。 因為Combox1的Style設定為csDropDown,使用者可以更改,設定為csDropDownList,使用者就不能更改了,所以小弟要用csDropDownList。 這樣該怎麼解決?
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-05 15:51:03 IP:218.15.xxx.xxx 未訂閱
引言: 小弟的Tab Order順序是Edit1,Edit2,Combox1,Edit3,Button1,Button2。 Form1.KeyPreview已經設定為true了。 但是還是會出現多跳一個的現象。 小弟設定斷點在if(Key==13),用Shift F7一步一步執行,發現Combox1會執行兩次FormKeyPress。所以會出現跳多一個的現象。 Combox1的Style設定為csDropDown就醫竊正常,但是只要設定為csDropDownList就會出現多跳一個的現象。 因為Combox1的Style設定為csDropDown,使用者可以更改,設定為csDropDownList,使用者就不能更改了,所以小弟要用csDropDownList。 這樣該怎麼解決?
irvinehing您好:小弟实测了一下,没加key:=#0;时是会有这种现象,加上此句就不会有这种现象了,您试试看 <>~~~静心养德~~~
系統時間:2024-05-04 17:16:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!