Мне не нужно включать минимальный воспроизводимый пример в этот вопрос, потому что у меня есть ответ, который кто-то еще мог бы добавить к моему первоначальному вопросу, если бы он не был закрыт так быстро , а затем не открывался повторно даже после внесения его по теме.
Оказывается, это проблема поведения в VCL:
Исключение при использовании комбинированных списков в форме, которая находится в DLL и использует VCLStyles.
Embarcadero не исправит это, поскольку это не «проблема»,
R & D пишет, что в приложении должен быть включен менеджер стилей
и может быть только один TStyleManager с включенными системными хуками
(Свойство TStyleManager.SystemHooks), потому что оно обрабатывает все окна
из приложения. Текущая система не поддерживает сценарий, который вы
предлагают, и в настоящее время нет плана переделать его
но есть обходной путь, который заключается в добавлении следующей строки кода непосредственно перед вызовом SetStyle или TrySetStyle в коде DLL:
TStyleManager.SystemHooks := [];
Надеюсь, это поможет разработчикам Delphi, столкнувшимся с этой досадной проблемой после обновления до более новых версий.
В моем случае я добавляю в проект условное определение для библиотек, затем добавляю этот код в те места, где он устанавливает стили, так как один и тот же модуль включен как в EXE, так и в DLL:
{$IFDEF DLL}
TStyleManager.SystemHooks := [];
{$ENDIF}