右键单击TOpenDialog中的文件时,使用自定义样式会显示无效字符

Tho*_*mas 10 delphi topendialog vcl-styles windows-10 delphi-xe8

请参阅以下步骤以重现.适用于XE2,但不适用于XE8.

  1. 创建一个新的VCL表单应用程序 - Delphi
  2. 在表格上放置一个TButton和一个TOpenDialog
  3. 在按钮OnClick事件调用中OpenDialog1.Execute
  4. 运行程序,打开文件对话框,右键单击文本文件=>显示菜单项确定
  5. 转到项目/选项/应用程序/外观.启用并选择自定义样式(例如"Ruby Graphite")并重新编译
  6. 运行程序,打开文件对话框,右键单击文本文件=>不正确显示菜单项(显示无效字符)

使用XE8订阅更新1(Windows从8.1升级到10)进行测试

RRU*_*RUZ 17

Windows 10在负责绘制shell弹出菜单的代码中引入了一些内部更改.因此必须修改VCL样式代码以与Windows 10兼容.我刚刚向EMB报告了这一点

作为解决方法,您可以使用VCL样式实用程序项目来修复此问题(只需Vcl.Styles.Utils.Menus要将单元添加到项目中).

检查下一个图像,左侧弹出菜单使用标准VCL样式,右侧菜单使用该VCL Styles Utils项目.

在此输入图像描述