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

1

10

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)

Lorenzo answered 25/8, 2015 at 14:26 Comment(6)
Which local Windows version is that?Winnick
@Rudy, Windows 10 ProLorenzo
I meant, which national version, i.e. Danish, German, US, Russian, Chinese, Dutch, French, Greek, etc. etc.Winnick
But that seems to be obsolete anyway.Winnick
Windows 10 pro, Swedish.Lorenzo
Ok thanks. But as I said, RRUZ's answer made knowing that obsolete anyway.Winnick
T
17

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.

enter image description here

Tight answered 25/8, 2015 at 16:22 Comment(3)
This is one of the perils and risks of adopting VCL styles. Embarcadero should do a much better job of communicating this risk.Bonnard
Is this related to the reverse engineering of DirectUI?Bonnard
@DavidHeffernan, No, the menus are drawn using a "traditional" hook (SetWindowsHookEx) over the #32768 class.Tight

© 2022 - 2024 — McMap. All rights reserved.