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

用Hook將Enter按鍵攔截改由F2取代

尚未結案
scottirisa
一般會員


發表:5
回覆:3
積分:1
註冊:2004-01-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-11 17:43:53 IP:211.23.xxx.xxx 未訂閱
您好 我有一個這樣的訊息 if application.Messagebox('無此資料,確認兌回 ???','歷史禮 券',mb_YESNO) = IdYes then ......... 而我要將這預設的IdYes指給F2 而我要將這預設的IdNo指給ESC 當跳開這段程式需恢復到正常 我找了很多相關的資料,應該是我功力不足,一測在測就是無法測出我想要的,請高人給予教導。 我測了一些高手寫完成的,但這些範例是寫控制滑鼠等,所以還是請教高手。
jest0024
高階會員


發表:11
回覆:310
積分:224
註冊:2002-11-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-11 23:50:10 IP:203.67.xxx.xxx 未訂閱
引言: 您好 我有一個這樣的訊息 if application.Messagebox('無此資料,確認兌回 ???','歷史禮 券',mb_YESNO) = IdYes then ......... 而我要將這預設的IdYes指給F2 而我要將這預設的IdNo指給ESC 當跳開這段程式需恢復到正常 我找了很多相關的資料,應該是我功力不足,一測在測就是無法測出我想要的,請高人給予教導。 我測了一些高手寫完成的,但這些範例是寫控制滑鼠等,所以還是請教高手。
1.如果使用Application.MessageBox必須使用Hook(使用dll)攔劫,比較麻煩,
  不過相關文章應該找的著。
2.使用MessageDlg能使用TApplicationEvents攔劫    範例:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;var Handled: Boolean);
  if(Msg.message=WM_KEYDOWN)or(Msg.message=WM_KEYUP)then
     if Screen.ActiveForm.ClassName='TMessageForm' then
       Case msg.wParam of
         VK_RETURN:msg.wParam:=VK_F2;
         VK_F2:msg.wParam:=VK_RETURN;
       end;
end;
學而時習之不亦樂乎!
scottirisa
一般會員


發表:5
回覆:3
積分:1
註冊:2004-01-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-12 10:10:03 IP:211.23.xxx.xxx 未訂閱
您好 可能是我表示不清楚,我想要的是 當出現視窗時,鍵盤輸入失效(包含滑鼠左右鍵也包含掃描器),僅開放按F2表示 YES 按ESC表示 NO 謝謝
andersonhsieh
版主


發表:33
回覆:531
積分:439
註冊:2002-06-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-13 12:38:36 IP:61.66.xxx.xxx 未訂閱
給你一個建議,不要用application.Messagebox用自己寫的一個視窗取代, 在這一視窗中攔下所有的按鍵,當按下F2就觸發yes的按鈕,當按下ESC就觸發no的按鈕 @@~~飛翔在天際的精靈~~@@
------
@@~~飛翔在天際的精靈~~@@
scottirisa
一般會員


發表:5
回覆:3
積分:1
註冊:2004-01-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-14 09:39:18 IP:211.23.xxx.xxx 未訂閱
謝謝各位的幫忙 我已經找到方法了,如上一位大大說的我使用了另一個from,然後用ModalResult來作。一樣達到我的需求了。
系統時間:2024-05-22 0:08:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!