PopupMenu的Esc鍵,是否可用其他鍵代替 |
尚未結案
|
shinjie
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:12 回覆:275 積分:287 註冊:2003-03-19 發送簡訊給我 |
|
wameng
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
目前我認為可以做到的方式: 第一種:使用投機取巧方式。POPUPMENU 中新增"關閉"項目,並定義為 F1。
ShortCut 可配合 TActionList 處理快速鍵。
在 Action1.Execute 中 ,加入關閉 PopupMenu 的動作。
缺點:
會多一個顯示項目。 第二種:利用 PopupList 接管 WndProc 並判斷 WM_MENUCHAR。 缺點:
只能接受數字或字母字元。F1....F12 不行。 第三種:利用 HotKey 。 缺點:
需註冊熱鍵。RegisterHotKey 可能會干擾別的程式。 最後補充一點:
若要使POPUPMENU 關閉。可使用
PostMessage(Handle,WM_LBUTTONDOWN,0,0);
PostMessage(Handle,WM_LBUTTONUP,0,0);
這樣的方法。 參考 ~~~~~~~~~~~
難得聰明,常常糊塗。
~~~~~~~~~~~
|
shinjie
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:12 回覆:275 積分:287 註冊:2003-03-19 發送簡訊給我 |
謝謝wameng大大的回覆,想請問一下第一種方式的設定,因為我有拉一個
PopupMenu與ActionList,並設Action1為關閉 PopupMenu 的動作,並設定
ShortCut為F1,但是我按F1並不會關閉PopupMenu說。 =========================================
程式有問題並不可怕,最怕是不知問題出在那
不知問題在那不可怕,更怕是不知如何問問題
寫程式要從最簡單的開始
------
我將在茫茫人海中尋訪我唯一之靈魂伴侶。 得之;我幸。不得;我命。 |
wameng
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
Sorry ! 有點秀斗。 第一種 方式只適用於POPUPMENU尚未展開。 我用第二種方式做到。
... private DefMenuProc: TFarProc; procedure MenuWndProc(var Message: Tmessage); ..... procedure TForm1.FormCreate(Sender: TObject); begin DefMenuProc:=Pointer(GetWindowLong(PopupList.Window,GWL_WNDPROC)); SetWindowLong(PopupList.Window,GWL_WNDPROC,LongInt(MakeObjectInstance(MenuWndProc))); end; procedure TForm1.MenuWndProc(var Message:Tmessage); var F1KeyDn :Boolean; begin With Message do Result:=CallWindowProc(DefMenuProc,PopupList.Window,Msg,WParam,LParam); F1KeyDn := (GetKeyState(VK_F1) and not $7FFF) <> 0; if F1KeyDn then begin PostMessage(Handle,WM_LBUTTONDOWN,0,0); PostMessage(Handle,WM_LBUTTONUP,0,0); end; end;參考 ~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~ |
shinjie
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:12 回覆:275 積分:287 註冊:2003-03-19 發送簡訊給我 |
非常感謝wameng大大,問題已經解決了。
剛剛試了,關掉視窗時會有錯誤。
在Form的Destroy加入以下代碼,就不會出現了。
SetWindowLong(PopupList.Window,GWL_WNDPROC,LongInt(DefMenuProc)); =========================================
程式有問題並不可怕,最怕是不知問題出在那
不知問題在那不可怕,更怕是不知如何問問題
寫程式要從最簡單的開始 發表人 - shinjie 於 2005/06/02 14:42:03
------
我將在茫茫人海中尋訪我唯一之靈魂伴侶。 得之;我幸。不得;我命。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |