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

熱鍵問題

答題得分者是:ccchen
stonys
初階會員


發表:64
回覆:111
積分:38
註冊:2002-09-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-10 18:56:54 IP:61.59.xxx.xxx 未訂閱
請教大家一下... 我想在程式中設定一個熱鍵 使得使用者在按下熱鍵之後... 便執行一個功能 該如此編寫呢? 找了好多文章都沒找到... 請各位先進幫幫忙^^
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-10-10 21:59:04 IP:203.217.xxx.xxx 未訂閱
有很多方法 1. Form的keypreview設為Ture, 然後寫在Form之onKeyPRess 2. 寫在application.onMessage 3. 用TActionList我認為此方法最好維護 (1) Form上放一個TActionList (2) DoubleClick此ActionList加入一個Action (3) 在此Action之shortcout選擇要使用之鍵組合 (4) 在action之onExecute寫你要執行的程式
stonys
初階會員


發表:64
回覆:111
積分:38
註冊:2002-09-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-10-10 22:37:18 IP:61.59.xxx.xxx 未訂閱
謝謝版大的回應... 每次都麻煩您了... 按照您所說的方法,我的確測試成功... 但是我另外又要請教一個問題... 如果說我想視窗隱藏起來的話 即我用了form.hide 那有辦法以熱鍵方式將其呼叫回來嗎?
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-10-11 08:45:47 IP:61.219.xxx.xxx 未訂閱
即我用了form.hide 那有辦法以熱鍵方式將其呼叫回來嗎? 理論上當然可以, 實際上處理時機確很難找到 1. 必須是Normal Form, MDIChild無法hide 2. 必須用show顯示, 不可showmodal 3. 當hide 時, 無法取得focus, 故該Form上之熱鍵無法啟動,故應將熱鍵放到application.onMessage 自行寫一個onMessage如下: mainform create時 application.onMessage:=onMessage;
procedure TMainForm.OnMessage(var Msg: Tmsg; var Handled: Boolean);
begin
  Case Msg.message of
   WM_KEYDOWN: begin
     case msg.wParam of
       VK_F1:
         Application.HelpContext(gs_HelpContext);
       ...
     end;
   end;
  end;
end;
stonys
初階會員


發表:64
回覆:111
積分:38
註冊:2002-09-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-10-11 12:26:46 IP:61.59.xxx.xxx 未訂閱
ㄜ...好像還是不行耶... 無法編譯成功
stonys
初階會員


發表:64
回覆:111
積分:38
註冊:2002-09-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-10-11 16:54:58 IP:61.59.xxx.xxx 未訂閱
ㄟ...我已經測試成功了... 可是只有在視窗在的時候才有辦法執行熱鍵... 視窗一隱藏起來~~~好像就無法執行了... 請問一下~~~這邊能怎麼改呢?
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-10-12 08:17:08 IP:203.217.xxx.xxx 未訂閱
當hide 時, 無法取得focus, 故該Form上之熱鍵無法啟動 如果hide的不是mainForm你可以藉由MainFOrm之hotkey啟動, 所以用application.OnMessage攔截整個application的keydown 你也可以將熱鍵寫在任何一個Active的form中 若是整個application均不在active狀態那就很麻煩了.
stonys
初階會員


發表:64
回覆:111
積分:38
註冊:2002-09-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-10-12 08:42:35 IP:61.59.xxx.xxx 未訂閱
很麻煩@@! 那有什麼辦法能達成呢? 因為我曾經看過一個小軟體... 是專門用來切換虛擬桌面的... 當執行它之後也是會隱藏起來... 但是按下熱鍵便可以做功能切換... 是不是說要針對WIN的核心去做修改呢?
系統時間:2024-06-24 19:48:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!