#delphi #styles #messagebox #vcl
#delphi #стили #messagebox #vcl
Вопрос:
Версия: Delphi Berlin 10.1
Я сталкиваюсь с проблемами, которые я считаю ошибкой темы vcl, заключающейся в том, что при применении темы в стиле vcl к приложению сообщения с использованием TApplication.Количество сообщений в MessageBox ограничено 256 символами.
Нажатие.MessageBox с 298 символами текста БЕЗ применения темы VCL. Весь текст отображается правильно. Ссылка: без темы в стиле VCL
Нажатие.MessageBox с текстом из 298 символов С примененной темой VCL. Текст ограничен 256 символами, а остальное вырезается. Ссылка: с любой темой в стиле VCL (пример Windows10)
Я уже проанализировал класс TCustomStyle Vcl.Styles.pas, но я не нашел, как решить эту неприятную ситуацию, поэтому мне нужна ваша помощь.
Редактировать:
Следуя информации, переданной Андреасом Рейбрандом, можно было определить, что это было ограничение размера буфера GetText GetText TStyleHook, который был ограничен массивом [0..256] символа. С помощью этой информации я создал обходной путь для нового метода, в котором я увеличил размер буфера до массива [0 ..1023] символа, что решило мою проблему.
Сообщение об ошибке в QC Embarcadero:
https://quality.embarcadero.com/browse/RSP-14771
и
https://quality.embarcadero.com/browse/RSP-14772
К сожалению, обновление IDE (которое решило бы проблему) до более новой версии в настоящее время невозможно.
Комментарии:
1. Невозможно воспроизвести в 10.3 и Windows 7. Вы должны привести минимальный полный пример, демонстрирующий проблему. Но в любом случае лучшее решение — НЕ использовать стили VCL. Тогда вы получаете полностью исправленный графический интерфейс, который ведет себя точно так, как ожидают люди, и, в качестве бонуса, вы получаете визуально гораздо более приятный графический интерфейс.
2. Это известная ошибка. См. RSP-14772 . Это было исправлено в Delphi 10.2.
3. @AndreasRejbrand: комментарий со ссылкой на сообщение об ошибке и информацией об исправлении должен быть размещен в качестве ответа.
Ответ №1:
Это известная ошибка.
Об этом было сообщено Embarcadero в выпуске RSP-14772, и ошибка была исправлена в Delphi 10.2.
Лучшим решением является обновление до новейшей версии Delphi, которая также исправляет множество других ошибок.