D2007 迁移后,弹出菜单从左到右反转为从右到左

问题描述 投票:0回答:1

将我的源代码从 D7 迁移到 D2007 后,TPopup 菜单布局(图标/位图、文本对齐、三个点...)从左到右反转为从右到左。 我的系统语言是英语。

我尝试像这样添加新的 BiDiMode 设置,但它似乎无法解决问题。 有什么想法,如何让菜单图标回到左侧?

弹出菜单是这样创建的,没有引用表单:

Popup = TpopupMenu.create(nil);
Popup.BiDiMode := bdLeftToRight;

   StatisticsItem.Caption := 'menuitemtest1...';
   StatisticsItem.BitMap.Handle := loadbitmap(Hinstance, 'STATISTICS');
   StatisticsItem.OnClick := xxx
   PopUp.Items.insert(0,StatisticsItem);

   StatisticsItem2 := TMenuItem.Create(Popup);
   StatisticsItem2.Caption := 'menuitemtest2...'; 
   ETC...

   TrayIcon.PopupMenu := Popup;

enter image description here

delphi delphi-2007 bidirectional
1个回答
0
投票

您描述的问题不在示例代码中。

PopupMenu.BidiMode
可用于设置弹出菜单的方向。我在 Delphi 2009 中验证了这一点(我没有 2007)。因此,如果您显式设置此属性并且不遵守该属性,则很可能是其他一些代码弄乱了它。

你能做的就是设置

SysLocale.MiddleEast := False;
。这应该完全禁用从右到左。但进一步研究一下可能会更好。

在项目中启用调试 dcu。打开单元

Menus.pas
并在
TMenu.DoBiDiModeChanged
中设置断点。这应该告诉您菜单方向发生变化的位置。您应该对指定
MenuItemInfo.fType
的行特别感兴趣。

© www.soinside.com 2019 - 2024. All rights reserved.