aceeric
一般會員
發表:5 回覆:7 積分:2 註冊:2005-06-22
發送簡訊給我
|
請問一下各位大大!該如何攔截CTRL ALT G之組合按鍵來讓我的FORM作動作~~
|
supman
尊榮會員
發表:29 回覆:770 積分:924 註冊:2002-04-22
發送簡訊給我
|
您好:
請參考如下:
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if ((Shift.Contains(ssAlt)) && (Shift.Contains(ssCtrl)) && (UpperCase(Key)==71)) Form->ShowModal();
}
記得把Form的KeyPreview設為true
|
aceeric
一般會員
發表:5 回覆:7 積分:2 註冊:2005-06-22
發送簡訊給我
|
謝謝您!!
不過我是想讓我在FORM上的一個Button->Visible=fasle;
可是我這樣做Form好像得不到我的按鍵的值!!
|
supman
尊榮會員
發表:29 回覆:770 積分:924 註冊:2002-04-22
發送簡訊給我
|
請問你把Form的KeyPreview設為true了嗎????????
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if ((Shift.Contains(ssAlt)) && (Shift.Contains(ssCtrl)) && (UpperCase(Key)==71)) Button1->Visible=false;
}
|
aceeric
一般會員
發表:5 回覆:7 積分:2 註冊:2005-06-22
發送簡訊給我
|
嗯~我設了~
不過我想可能是因為我的form沒有可以讓鍵盤輸入的field(像是Memo或Edit之類的),所以才無法讓form產生keydown的even~
我如果建一個text field的話就可以了~
不過我的程式是想不論focus有沒有在text field都可以使用ctrl-alt-G來隱藏我的button~~我想是不是必須用hook來達成,不過hook可以監視組合鍵嗎??
|
supman
尊榮會員
發表:29 回覆:770 積分:924 註冊:2002-04-22
發送簡訊給我
|
唉,你既然是要在無論有無focus都要讓組合鍵作用,而且你也知道hook這東西,就請將主題,及你要問的內容寫清楚,指引解答的人正確的方向,不要浪費答題的人跟你自己的時間.....
關於hook的資料站內已經有很多討論,你看過了嗎?
利用hook搜尋一共有八頁資料,夠你研究了..以下是其中的一篇,先讀過遇到問題再發問吧。 [利用Hook技術實現鍵盤監控]
http://delphi.ktop.com.tw/topic.php?topic_id=19936
|
aceeric
一般會員
發表:5 回覆:7 積分:2 註冊:2005-06-22
發送簡訊給我
|
對不起,可能是我沒寫清楚,不過用hook的方式只是我猜想,因為我主要的目的只是要讓我自己設的組合鍵可以像MainMenu上的shortcut功能一樣,不一定要在text field上才有作用。
發問前我也試過了hook的方式,只是我一直試不出來組合鍵而已,不過我現在問題已經解決了,只是感覺有點偷雞摸狗,我一樣在MainMenu上設一個button讓後把隱藏起來,在設定它的組合鍵,雖然不能隨心所欲的用我想用的按鍵,不過應該是最快的解決方式了吧~~
最後還是謝謝您的回答~~
|