Using custom styles shows invalid characters when

2019-04-21 14:02发布

问题:

See steps below to reproduce. Works well in XE2 but not XE8.

  1. Create a new VCL Forms Application - Delphi
  2. Place a TButton and a TOpenDialog on the form
  3. In the button OnClick event call OpenDialog1.Execute
  4. Run the program, open the file dialog, and right-click on a text file => shows menu items ok
  5. Go to Project/Options/Application/Appearance. Enable and choose a custom style (such as "Ruby Graphite") and recompile
  6. Run the program, open the file dialog, and right-click a text file => does not show menu items correctly (invalid characters are shown)

Tested with XE8 Subscription Update 1 (and Windows upgraded from 8.1 to 10)

回答1:

Windows 10 introduces some internal changes in the code responsible to draw the shell popup-menus. So the VCL Style code must be modified to be compatible with Windows 10. I just reported this to EMB

As workaround you can use the VCL Styles Utils project which fixes this issue (only you need add the Vcl.Styles.Utils.Menus unit to your project).

Check the next Image , The left popup-menu uses the standard VCL Styles,and the right menu uses the VCL Styles Utils project.