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

Using custom styles shows invalid characters when right-clicking a file in TOpenDialog

请参阅以下步骤进行重现。在 XE2 中运行良好但在 XE8 中运行不佳。

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

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

Windows 10 在负责绘制 shell 弹出菜单的代码中引入了一些内部更改。所以必须修改VCL Style代码才能兼容Windows 10.我刚刚报了this to EMB

作为解决方法,您可以使用解决此问题的 VCL Styles Utils 项目(只需将 Vcl.Styles.Utils.Menus 单元添加到项目中)。

查看下一张图片,左侧弹出菜单使用标准VCL样式,右侧菜单使用VCL Styles Utils项目。