Forum Replies Created
-
AuthorPosts
-
yarmakParticipant'Support' wrote:
Не могу понять как такое может быть. А если программа запущена, но ни одной Dll еще не загружено? Тоже Application = nil?
Так быть не может. DLL линковалась статически, соответстченно до того как загрузится exe, запускается DLL.
как я себе представляю:
стартует ДЛЛ, инициализирует TApplication, потом EXE грузится, но т.к. TApplication уже создан, его и пользует.
При динамической линковке ясно, что сначала стартанет EXE (читай создаст TApplication), а потом подгрузит DLL.
как-то так.
yarmakParticipant'Torbins' wrote:После включения галки “Build with runtime packages”, Application и в dll и в exe будет один и тот же.
Так то оно так, но он будет у вас от ДЛЛ. Если посмотрите внимательно, то TApplication.Handle = NULL.
Побочными явлениями будет что на формах показывается стандартная иконка билдера, а не указанная в exe +
нельзя приложение свернуть в трей из-за того что нет хендла.
Вы знаете как это побороть?
yarmakParticipant'Torbins' wrote:Я думаю демка была бы не лишней.
И еще, откуда у вас в экзешнике тип TDLLForm? В делфи не возможно было бы его использовать в exe не потянув вместе с ним в экзешник его модуль.
Я не прав. Если положить TsSkinProvider на форму, то скины работают. Но много проблем с самой длл из-за переопределения TApplication в DLL.
В итоге пришел к варианту замены DLL на BPL. Скины работают отлично. Спасибо за помощь.
yarmakParticipantБросил, не помогло. форма осталась такой же.
Я к сожалению не знаю как работает компоненты TsSkinManager и TsSkinProvider, но у компонента TsSkinProvider есть указатель на TsSkinManager. Он сам его находит или его как-то надо передать этому компоненту?
Сейчас у компонента TsSkinProvider есть указатель на DataModule->SkinManager, но этот DataModule размещен в EXE, а форма с компонентом TsSkinProvider в DLL.
-
AuthorPosts