2010-11-08 130 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