Использование пользовательских стилей отображает недопустимые символы при щелчке правой кнопкой мыши по файлу в TOpenDialog.

См. шаги ниже, чтобы воспроизвести. Хорошо работает в XE2, но не в XE8.

  1. Создание нового приложения VCL Forms — Delphi
  2. Поместите TButton и TOpenDialog в форму
  3. В кнопке OnClick вызов события OpenDialog1.Execute
  4. Запустите программу, откройте диалоговое окно файла и щелкните правой кнопкой мыши текстовый файл => показывает пункты меню ok
  5. Перейдите в Проект/Параметры/Приложение/Внешний вид. Включите и выберите собственный стиль (например, «Ruby Graphite») и перекомпилируйте
  6. Запустите программу, откройте диалоговое окно файла и щелкните правой кнопкой мыши текстовый файл => пункты меню отображаются неправильно (отображаются недопустимые символы)

Протестировано с обновлением подписки XE8 1 (и обновлением Windows с 8.1 до 10)


person Thomas    schedule 25.08.2015    source источник
comment
Какая локальная версия Windows?   -  person Rudy Velthuis    schedule 25.08.2015
comment
@Руди, Windows 10 Pro   -  person Thomas    schedule 26.08.2015
comment
Я имел в виду, какая национальная версия, т.е. датская, немецкая, американская, русская, китайская, голландская, французская, греческая и т.д. и т.п.   -  person Rudy Velthuis    schedule 26.08.2015
comment
Но это все равно кажется устаревшим.   -  person Rudy Velthuis    schedule 26.08.2015
comment
Windows 10 про, шведский.   -  person Thomas    schedule 26.08.2015
comment
Хорошо спасибо. Но, как я уже сказал, ответ RRUZ в любом случае сделал это устаревшим.   -  person Rudy Velthuis    schedule 26.08.2015


Ответы (1)


В Windows 10 внесены некоторые внутренние изменения в код, отвечающий за отрисовку всплывающих меню оболочки. Таким образом, код стиля VCL должен быть изменен для совместимости с Windows 10. Я только что сообщил об этом в EMB

В качестве обходного пути вы можете использовать проект VCL Styles Utils, который устраняет эту проблему (только вам нужно добавить модуль Vcl.Styles.Utils.Menus в ваш проект).

Проверьте следующее изображение. В левом всплывающем меню используются стандартные стили VCL, а в правом меню используется проект VCL Styles Utils.

введите описание изображения здесь

person RRUZ    schedule 25.08.2015
comment
Это одна из опасностей и рисков, связанных с внедрением стилей VCL. Embarcadero должна гораздо лучше сообщать об этом риске. - person David Heffernan; 25.08.2015
comment
Связано ли это с реверс-инжинирингом DirectUI? - person David Heffernan; 26.08.2015
comment
@DavidHeffernan, нет, меню рисуются с использованием хука "traditional" (SetWindowsHookEx) над классом #32768. - person RRUZ; 26.08.2015