将我的源代码从 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;
您描述的问题不在示例代码中。
PopupMenu.BidiMode
可用于设置弹出菜单的方向。我在 Delphi 2009 中验证了这一点(我没有 2007)。因此,如果您显式设置此属性并且不遵守该属性,则很可能是其他一些代码弄乱了它。
你能做的就是设置
SysLocale.MiddleEast := False;
。这应该完全禁用从右到左。但进一步研究一下可能会更好。
在项目中启用调试 dcu。打开单元
Menus.pas
并在TMenu.DoBiDiModeChanged
中设置断点。这应该告诉您菜单方向发生变化的位置。您应该对指定 MenuItemInfo.fType
的行特别感兴趣。