2010-04-14 61 views
4

我有一個帶有TPopupMenu的Delphi 2007 VCL TPanel。面板上有一些TEdit控件。編輯繼承父面板的彈出式菜單。我不想讓這個彈出框繼承,所以編輯會顯示默認的Windows TEdit彈出式菜單,包括複製,剪切,粘貼等,但還沒有找到一種方法。似乎沒有「ParentPopupMenu」類型屬性來設置哪些控件從父組件繼承它。從繼承父級彈出菜單中停止VCL子控件

回答

5

嘗試將PopupMenu的AutoPopup屬性設置爲False,然後在需要時手動彈出菜單(因爲在TPanel的OnContextMenu事件中)。

+3

謝謝,這個OnContextPopup代碼似乎工作: var 控制:TControl; 開始 控制:= FindVCLWindow(Mouse.CursorPos);如果Control = MyPanel,則開始 MyMenu.Popup(Mouse.CursorPos.X,Mouse.CursorPos.Y); 處理:=真; 結束; 結束; – Anagoge 2010-04-14 04:22:03

4

這是QC#54286: Parent-PopupMenu overrides standard context menu。安德烈亞斯豪斯拉登的VCL Fix Pack解決了這個問題,所以它的工作方式就像你期待的那樣。

+0

感謝您的鏈接。很高興知道我並不孤單考慮這個錯誤。希望Embarcadero最終會同意。我決定採用AutoPopup修復程序,因爲我想要最簡單的修復方法,而且我只需要一種修復方法。 – Anagoge 2010-04-14 04:20:43