2010-11-08 125 views
1

我使用delphi 2009並創建了一個彈出菜單。奇怪的彈出式菜單問題

object PopupMenu1: TPopupMenu 
    object lmm1: TMenuItem 
    Caption = 'lm/m'#178 
    end 
end 

只要我在彈出式菜單中有「²」,它就會顯示爲「lm /m²(L)」。對於AutoHotKeys使用maManual並沒有幫助...它仍然以相同的方式顯示。這就像熱鍵,因爲每個菜單項都得到一個新的。

「流明/平方米(L)」 「米/平方米(M)」 「AM /平方米(N)」 「BM /平方米(O)」

必須我使用「流明/平方米「而不是」lm /m²「,如果我想讓(L)消失?

國際上使用,我仍然期望「²」將被正確顯示。

謝謝你的幫助!

+3

不知道,因爲我瀏覽D2007的menus.pas,但它看起來像VCL被誤認'²'與[前導字節](http://docwiki.embarcadero.com/VCL/en/SysUtils.LeadBytes)(嵌套過程'InsertHotkeyFarEastFormat')。 – 2010-11-09 01:50:11

+1

我認爲塞爾特克在這裏是正確的。字符串中究竟是什麼字符?這是一個雙字節的字符串,你只指定了#178。我想調查這方面,看看發生了什麼。也值得通過源代碼進行調試,看看發生了什麼。 – mj2008 2010-11-09 10:19:49

+0

謝謝,夥計們!我發現TPopupMenu.AutoHotKeys必須設置爲maManual。我曾嘗試過使用菜單項,但它顯然需要在TPopupMenu中。也許塞爾塔克可以把它作爲答案,這樣他就可以獲得積分! – 2010-11-09 18:22:16

回答

1

這裏的學習/調試TMenuItem.InternalRethinkHotkeys和TMenuItem.GetAutoHotkeys源後,我想出瞭解決方案:

object PopupMenu1: TPopupMenu 
    Left = 184 
    Top = 272 
    object MenuItem1: TMenuItem 
    AutoHotkeys = maManual 
    Caption = 'lm/m'#178 
    end 
end 
0

當ALT鍵被按下時,AutoHotKeys屬性適用於鍵盤快捷鍵。你所看到的是TMenuItem.ShortCut財產在工作。確保將其設置爲scNone以表示您不希望「(#)」出現的任何項目。

+0

謝謝你的回覆,雷米。作爲TeamB的一部分,你做了很多很棒的工作 - 謝謝。 TMenuItem.ShortCut被設置爲scNone。試圖找出發生了什麼,我創建了一個簡單的測試應用程序,並稱爲PopupMenu.Popup方法。 – 2010-11-09 00:07:17

+0

然後,您將只需通過VCL源代碼來找出多餘文本的顯示位置。 – 2010-11-09 18:41:56